2017-10-12 98 views
0

问题:我无法正确配置SSIS代理和SQL凭据,以便为运行SSIS的SQL代理作业步骤使用受限制的访问域帐户(域\用户名)包。 Domain \ UserName帐户具有所有必需的权限和特权,并且SSIS包的设计也是正确的。我已经阅读了很多关于这个主题的材料,并希望在某些情况下我会错过一些帮助。使用代理和凭据时,SSIS作业SQL登录失败

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

现在,当我使用该域\用户名运行Visual Studio并手动运行该SSIS包时,所有内容都可以正常运行。但是当我将它部署到SSISDB时,它没有运行。我使用相同的用户帐户创建了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. 

回答

0

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

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

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

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