运行不同账号下使用T-SQL的SSIS包

Run SSIS package using T-SQL under different account

我通常 运行 使用 Sql 代理作业和代理用户的 SSIS 包,如下所述:https://www.sqlservercentral.com/articles/run-an-ssis-package-under-a-different-account

我现在需要 运行 使用相同的代理用户使用 T-SQL 相同的包。我一直在尝试使用 [catalog].[create_execution][catalog].[start_execution] 程序来执行此操作,但似乎没有办法指定用户。

如何以不同的用户身份执行包?

我最好的办法是使用 T-SQL 来执行配置为使用代理用户的 SQL 代理作业吗?

我不知道代理实际上如何使代理用户工作 - 特别是关于 SSIS 包。

在 SSMS 中的 "normal" sql 会话中,如果我想 运行 作为另一个用户进行查询

EXECUTE AS USER = 'TurgidWizard';
SELECT USER_NAME() AS WhoAmI;
REVERT;

该代码将允许我冒充您,直到我拨打 REVERT 电话。

但是,如果您换掉对 create_execution/start_execution 的调用,您将 运行 遇到与尝试使用本地 sql 服务器用户 运行 相同的问题使用 SSISDB 中的方法 - 它不起作用。 SSISDB 中的方法在开始之前都会进行 运行 检查,以确保用户具有正确的访问级别并且不会进行模拟。因为一旦这些方法开始 运行ning,它们自己就会进行模拟,所以我想这效果不佳。

我怎样才能 运行 使用 tsql 的包在不同的帐户下?我将使用 RUNAS 在凭据下启动 SSMS/sqlcmd 例如,以下将像您一样打开一个新命令 window。

runas /netonly /user:corpdomain.com\turgiwizard "cmd"

从那里开始,我所做的事情将在您的用户的支持下进行,因此我可以 运行 sqlcmd 调用

sqlcmd -S TheServer -d SSISDB -Q "EXECUTE catalog.create_execution ...;"

鼠标点击为Ctrl+Shift+右键点击可执行。

您的 SSMS 安装位置取决于版本,但请在以下路径中尝试以 140 为增量的各种十位数字增量

C:\Program Files (x86)\Microsoft SQL Server0\Tools\Binn\ManagementStudio\Ssms.exe

关于 运行as 的缺点是我无法自动将我的凭据传递给它。我看过有关使用自动热键等的文章,但从来没有遇到过任何运气。

Cleanest/easiest 需要定期 运行 的方法是将 sql 代理与代理一起使用,或者您可以使用 Windows 任务计划程序并将其创建为目标用户。一次执行,我可能会使用 运行as 方法。