【发布时间】:2020-06-18 22:00:38
【问题描述】:
我有一个包存储在文件系统中。我必须手动运行包,因此我使用“集成服务”打开 MSSMS 并使用“Windows 身份验证”。该软件包在我的帐户下执行。集成服务中是否有任何设置可以在另一个帐户下执行包?我的windows账号太强大了,所以我的目标是在一个有一些限制的特定账号下执行包。
【问题讨论】:
标签: ssis
我有一个包存储在文件系统中。我必须手动运行包,因此我使用“集成服务”打开 MSSMS 并使用“Windows 身份验证”。该软件包在我的帐户下执行。集成服务中是否有任何设置可以在另一个帐户下执行包?我的windows账号太强大了,所以我的目标是在一个有一些限制的特定账号下执行包。
【问题讨论】:
标签: ssis
我想到了三种不同的方法。
如果您喜欢当前使用集成服务对象类型打开 SSMS 以查找包并运行它的方法,请继续这样做。诀窍是当你运行程序时,你需要告诉 Windows 你想以另一个用户的身份运行。 Run SSIS package using T-SQL under different account 您可以通过 Ctrl-Shift-右键单击来调出 UI 或使用命令行和 RunAs
如果您知道包的位置(文件系统与数据库),则可以通过构建命令行参数 dtexec.exe /file C:\packages\are\here\mypacakage.dtsx 来消除鼠标点击
打开 Windows 任务计划程序并定义一个作业以使用上述命令行调用 (dtexec),但不要安排它,因此它是一个临时作业。 Windows 任务计划程序了解模拟其他用户的概念,因此它会提示您输入凭据以在其下运行进程。
类似于两个,但在这里我们将使用 SQL 代理来完成我们的脏活。同样,这是一项计划外的工作,但使用 Agent 运行包的好处是 SSIS 工作步骤类型“知道”如何构建 dtexec 的命令。
要完成这项工作,您需要创建凭据,然后为凭据创建代理,然后允许在集成服务类型的作业步骤中使用代理。
我通常会打开 SSMS,所以我可能会采用方法 3 并以我非凡的宇宙力量启动这项工作,然后将其压缩到一个小小的苦工帐户中
【讨论】: