【问题标题】:Run SSIS package using T-SQL under different account在不同帐户下使用 T-SQL 运行 SSIS 包
【发布时间】:2020-09-23 14:03:32
【问题描述】:

我通常使用 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 代理作业吗?

【问题讨论】:

    标签: sql-server tsql ssis


    【解决方案1】:

    我不知道代理实际上是如何使代理用户工作的——尤其是在 SSIS 包方面。

    在 SSMS 中的“正常”sql 会话中,如果我想以另一个用户身份运行查询

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

    在我拨打REVERT 电话之前,该代码将允许我冒充你。

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

    如何在不同的帐户下使用 tsql 运行包?我会在凭据下使用RUNAS 启动SSMS/sqlcmd 例如,下面会为您打开一个新的命令窗口。

    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 Server\140\Tools\Binn\ManagementStudio\Ssms.exe
    

    关于 runas 的缺点是我无法自动将我的凭据传递给它。我看过关于使用自动热键之类的文章,但从来没有运气。

    对于需要定期运行的东西,最干净/最简单的方法是使用带有代理的 sql 代理,或者您可以使用 Windows 任务计划程序并将其创建为目标用户。一次性处决,我可能会使用 runas 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      相关资源
      最近更新 更多