使用代理和凭据时SSIS作业SQL登录失败

使用代理和凭据时SSIS作业SQL登录失败,ssis,proxy,credentials,Ssis,Proxy,Credentials,问题:我无法正确配置SSIS代理和SQL凭据,以便对运行SSIS包的SQL代理作业步骤使用受限访问域帐户(域\用户名)。域\用户名帐户具有所有必需的权限和特权,并且SSIS包的设计也正确。我已经阅读了很多关于这个主题的材料,如果我遗漏了什么,我希望得到一些帮助 更多详细信息:我有一个SSIS包,它只从一个SQL Server数据库表中读取数据,然后将数据推送到另一台服务器上的另一个数据库表中。我已经创建了一个特殊标识(域\用户名)来执行此操作,因为这需要每天运行 现在,当我使用该域\用户名运行v

问题:我无法正确配置SSIS代理和SQL凭据,以便对运行SSIS包的SQL代理作业步骤使用受限访问域帐户(域\用户名)。域\用户名帐户具有所有必需的权限和特权,并且SSIS包的设计也正确。我已经阅读了很多关于这个主题的材料,如果我遗漏了什么,我希望得到一些帮助

更多详细信息:我有一个SSIS包,它只从一个SQL Server数据库表中读取数据,然后将数据推送到另一台服务器上的另一个数据库表中。我已经创建了一个特殊标识(域\用户名)来执行此操作,因为这需要每天运行

现在,当我使用该域\用户名运行visual studio并手动运行SSIS包时,一切都运行得非常好。但当我将其部署到SSIDB时,它没有运行。我已使用相同的用户帐户创建了SQL Server安全凭据,并使用该凭据创建了执行代理的SSIS包,并将SQL代理作业步骤配置为作为该代理帐户运行

但当我尝试执行SQL代理作业步骤时,它总是会出现以下错误:

Message
Executed as user: Domain\UserName. Microsoft (R) SQL Server Execute Package
 Utility  Version 11.0.6020.0 for 64-bit  Copyright (C) Microsoft Corporation.
All rights reserved.    Started:  10:00:26 AM  Failed to execute IS server package
because of error 0x80131904. Server: XXXXXXXXXXXX, Package path: XXXXXXXXXX,
 Environment reference Id: 36.  Description: Login failed for user 'Domain\UserName'.
Source: .Net SqlClient Data Provider  Started:  10:00:26 AM  Finished: 10:00:26 AM
Elapsed:  0.578 seconds.  The package execution failed.  The step failed.

我发现了问题。我错过了授予Domain\UserName使用代理权限的一个步骤

解释 您需要使用sp_grant_login_to_proxy system存储过程向将使用创建的代理帐户的登录名/角色授予权限。您可以使用sp_enum_login_for_代理系统存储过程来查看有权访问代理的所有登录名/角色

脚本-向安全主体授予代理访问权限:

USE msdb
GO 
--Grant proxy account access to security principals that could be
--either login name or fixed server role or msdb role
--Please note, Members of sysadmin server role are allowed to use any proxy 
EXEC msdb.dbo.sp_grant_login_to_proxy 
@proxy_name=N'SSISProxyDemo' 
,@login_name=N'Domain\UserName' 
--,@fixed_server_role=N'' 
--,@msdb_role=N'' 
GO 
--View logins provided access to proxies 
EXEC dbo.sp_enum_login_for_proxy 
GO 

我发现了问题。我错过了授予Domain\UserName使用代理权限的一个步骤

解释 您需要使用sp_grant_login_to_proxy system存储过程向将使用创建的代理帐户的登录名/角色授予权限。您可以使用sp_enum_login_for_代理系统存储过程来查看有权访问代理的所有登录名/角色

脚本-向安全主体授予代理访问权限:

USE msdb
GO 
--Grant proxy account access to security principals that could be
--either login name or fixed server role or msdb role
--Please note, Members of sysadmin server role are allowed to use any proxy 
EXEC msdb.dbo.sp_grant_login_to_proxy 
@proxy_name=N'SSISProxyDemo' 
,@login_name=N'Domain\UserName' 
--,@fixed_server_role=N'' 
--,@msdb_role=N'' 
GO 
--View logins provided access to proxies 
EXEC dbo.sp_enum_login_for_proxy 
GO