从不同帐户下的存储过程调用 SSIS 包

Posted

技术标签:

【中文标题】从不同帐户下的存储过程调用 SSIS 包【英文标题】:Calling SSIS package from stored procedure under a different account 【发布时间】:2015-03-31 03:24:43 【问题描述】:

我有一个存储过程,它使用 EXEC SSISDB.CATALOG.start_execution @Execution_Id 方法运行和调用 SSIS 包。

但是我需要在具有更多权限的服务帐户而不是用户帐户下执行包。

使用 EXECUTE AS LOGIN = 不起作用。有谁知道如何做到这一点。我知道的唯一其他方式涉及代理工作和代理帐户。

在 SQL 2012 上肯定有一种简单的方法可以实现这一点吗?

【问题讨论】:

我过去使用您提到的代理工作和代理帐户解决了这个问题。 【参考方案1】:

'EXECUTE AS' 对我来说很好用。

需要注意的一点是在调用执行方法之前将上下文切换到 SSIS 目录数据库。因此顶部有“USE”声明。

USE SSISDB;
EXECUTE AS LOGIN = 'domain\user'

DECLARE @execution_id BIGINT
EXEC CATALOG.create_execution @folder_name = 'MyFolder1',
    @project_name = 'MyProject', @package_name = 'Package.dtsx',
    @use32bitruntime = 1, @execution_id = @execution_id OUTPUT;

EXEC CATALOG.start_execution @execution_id;

【讨论】:

以上是关于从不同帐户下的存储过程调用 SSIS 包的主要内容,如果未能解决你的问题,请参考以下文章

从 Java 调用目录过程执行 SSIS 包

使用 SQL 身份验证执行 SSIS 包

如何通过在SSIS中调用函数或存储过程来使用拆分转换过滤和拆分数据?

使用 SSIS 包优于存储过程的优势? [关闭]

sql 这将使用存储过程运行SSIS包。

有没有办法在每个 SSIS 包之前和之后启动存储过程?