在没有代理作业的情况下,从C#执行SSIS包作为代理

时间:2018-04-13 15:19:29

标签: c# sql-server ssis proxy

我正面临着我正在进行的项目中的问题。我开发了一个小的C#工具,用于在SQL Server中维护多个表等,并提供在服务器上调用SSIS包并将数据库表中的值传递给它的可能性。 但是,在我遇到问题的几个环境中,SSIS必须通过代理用户执行(代理用户已经存在并且在多个代理作业中使用。 现在,由于我不想为我想要执行的每个包创建一个代理作业,我尝试在调用包之前执行EXECUTE AS LOGIN...。不幸的是我收到了错误(类似security can not be redirected. Please try to execute... in the same DB the EXEC AS LOGIN has been performed)。 那么,有没有办法调用SSIS包并将代理用户名传递给它而不创建代理作业?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以创建一个调用子包的父包。然后创建一个使用代理调用父包的代理作业。

父包读取表并根据表中的内容设置子包的名称/位置,然后执行子包。如果表中有多行,您可以选择使用循环来执行多个子包。

C#工具使用您要执行的子包填充表,然后启动作业。

我意识到这并没有回答如何在没有创造工作的情况下做到这一点的问题,但我不知道如何做到这一点,至少这样你只需要创造所有包裹都有一份工作。