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