我有一个SSIS。当我从Visual Studio以用户K运行它时,它运行正常。但是,当我以其他用户A的身份运行它时,它声称已成功完成,但它没有做任何事情(整个过程位于一个foreach循环容器内,该容器遍历某个目录中的所有文件)。然后我尝试将其作为一项工作运行,并再次声称成功完成,但它没有做任何事情,即使作业所有者是一个几乎完全访问权限的用户。
问题是:如何知道哪些用户权限用于在作业中执行SSIS?
答案 0 :(得分:1)
以编程方式,您可以访问ssis系统变量UserName(<div class="mask">
<div class="container">
<div class="item-1">Block 1</div>
<div class="item-2">Block 2</div>
<div class="item-3">Block 3</div>
</div>
</div>
<div class="mask">
<div class="container alt">
<div class="item-1">Block 1</div>
<div class="item-2">Block 2</div>
<div class="item-3">Block 3</div>
</div>
</div>
)。
您可以在脚本任务的FireInformation命令中使用它,然后UserName将显示在执行日志中。
答案 1 :(得分:0)
这肯定指向用户K在系统上没有所需的权限。
此类方案中的最佳做法是让服务帐户用户在加载数据的服务器上具有sysadmin权限。首先使用相同的帐户创建凭据(Security-&gt; Credential),然后使用可访问子系统的代理帐户(SQL Server代理 - >代理) - SQL Server Integration Services包。现在,您在为运行此程序包而创建的SQL Server代理作业中,使用此代理帐户来运行作业。这样,任何人都可以通过SQL Server代理作业运行该程序包。
使用此链接作为参考 - https://www.red-gate.com/simple-talk/sql/database-administration/setting-up-your-sql-server-agent-correctly/并查看“为SSIS包执行创建代理”部分