在SQL Server 2005中,是否可以安排SSIS包运行SQL代理服务帐户以外的其他程序?
我有一个SSIS包,可以连接数据库并运行存储过程。我的标准是我不会在包或包配置中指定用户名/密码,所以我想使用集成身份验证。
问题是,默认情况下,作业中的步骤作为SQL代理服务帐户运行,而我们的服务器组不希望授予该帐户对我的程序包将执行的存储过程的执行权限。所以我们试图找到一种在步骤中指定不同帐户的方法,因此包将在不同的上下文中运行。这可能吗?
答案 0 :(得分:38)
如果您可以通过SQL Server Management Studio访问SQL Server Agent
,以下是使用图形用户界面创建作业的步骤。这些步骤说明如何使用SQL代理服务帐户创建SQL作业以运行SSIS,以及如何创建代理以使用不同的凭据在不同的情况下运行。
转到SQL Server Management Studio。展开SQL Server Agent
并右键点击工作,然后选择New Job...
,如屏幕截图# 1 所示。
提供名称,默认情况下,所有者将是创建作业的帐户,但您可以根据自己的要求进行更改。如果您愿意,可以指定类别并提供说明。请参阅屏幕截图# 2 。
在步骤部分,点击New...
,如屏幕截图# 3 所示。
在“新建作业步骤”对话框中,提供步骤名称。从类型中选择SQL Server Inegration Services Package
。默认情况下,此步骤将在SQL Agent Service Account
下运行。选择包源作为File system
并通过单击省略号浏览到包路径。这将填充Package路径。请参阅屏幕截图# 4 。如果您不希望在 SQL Agent Service Account
下执行该步骤,请参阅步骤# 8 - 9 以了解如何执行您可以使用其他帐户。
如果您有该软件包的SSIS配置文件(.dtsConfig),请单击配置选项卡并添加配置文件,如屏幕截图# 5
点击确定,步骤1中有包,如屏幕截图# 6 所示。同样,您可以创建不同的步骤。
创建作业后,您可以右键单击作业并选择Script Job as --> CREATE To --> New Query Editor Window
生成脚本,如屏幕截图# 7 所示。
要在不同帐户下运行SSIS步骤,请在Management Studio上导航至Security --> right-click on Cedentials --> select New Credential...
,如屏幕截图# 8 所示。
在New Credential
对话框中,提供您希望在SQL作业中执行SSIS步骤的凭据名称,Windows帐户和密码。请参阅屏幕截图# 9 。将创建凭据,如屏幕截图# 10 。
接下来,我们需要创建一个代理。在Management Studio上,导航至SQL Server Agent --> Proxies --> right-click on SSIS Package Execution --> select New Proxy...
,如屏幕截图# 11 所示。
在“新建代理帐户”窗口中,提供代理名称,选择新创建的凭据,提供说明并选择SQL Server Integration Services包,如屏幕截图# 12 所示。应创建代理帐户,如屏幕截图# 13 。
现在,如果您返回SQL作业中的步骤,您应该会在运行方式下拉菜单中看到新创建的代理帐户。请参阅屏幕截图# 14 。
希望有所帮助。
屏幕截图#1:
屏幕截图#2:
屏幕截图#3:
屏幕截图#4:
屏幕截图#5:
屏幕截图#6:
屏幕截图#7:
屏幕截图#8:
屏幕截图#9:
屏幕截图#10:
屏幕截图#11:
屏幕截图#12:
屏幕截图#13:
屏幕截图#14:
答案 1 :(得分:7)
如果要从SQL代理作业执行SSIS包,则可以创建代理。查看here了解详情。
答案 2 :(得分:0)
使用SQL 2012,我收到一个错误,即选择的用户帐户不允许作为代理。使用以下查询解决了此问题:
use msdb
GO
exec sp_grant_login_to_proxy @login_name = 'MyLoginName', @proxy_name= 'proxy_SSIS'