我可以在两个服务器之间复制文件,比如手动说服务器A和服务器B,并且我对两边的文件夹都有权限。
我正在使用文件系统任务来复制文件。
当我的源和目标位于服务器中时,包在Visual Studio和SSISDB中都能正常工作。
当我的源和目标位于不同的服务器中时,包在Visual Studio中工作正常但SSISDB中的包失败。它说访问被拒绝。我的帐户已映射到SSISDB。
任何解决此问题的想法。
使用SQL Server代理JoB可以正常运行包。该作业通过代理帐户运行。
我们可以将Package配置为通过代理帐户运行。
错误屏幕截图
答案 0 :(得分:6)
首先,@ Nick.McDermaid在评论中提供了一个非常有用的链接,以便了解有关Which user credentials does Integration Services Catalog use to execute packages?
的更多信息搜索后有许多问题可能会导致此问题,因此我将提供许多可以解决您问题的解决方案。
<强> 1。 SQL Server帐户权限
添加阅读&amp;将权限写入您在指定路径上登录的帐户
<强> 2。将Windows身份验证添加到网络帐户
您可以为网络帐户添加Windows身份验证登录名(在sql server agent中用作代理),然后使用它运行该程序包。
这不是你的情况,但这些信息可能会有所帮助
<强> 1。 SQL Server帐户权限
添加阅读&amp;在指定路径上写入以下帐户的权限:
NT SERVICE\SQLSERVERAGENT
NT SERVICE\MSSQLSERVER
<强> 2。设置代理
您可以为SSIS包设置代理,并使用该代理帐户运行作业。
您可以参考以下链接之一了解详情:
第3。将网络驱动器映射到SQL Server实例
有些文章建议映射您在SQL Server(而不是操作系统)上使用的网络驱动器。您可以参考以下链接之一了解更多信息:
<强> 4。添加SysAdmin角色
将SysAdmin角色添加到以下帐户:
NT SERVICE\SQLSERVERAGENT
NT SERVICE\MSSQLSERVER
答案 1 :(得分:1)
您是否查看了MSDB对您的域帐户的权限。我会按照这些步骤。我有类似的问题
1)在服务器中部署软件包(正如您已经完成的那样)
2)确保在SSISDB下的Integration Services目录中加载并可用包
3)重新部署项目并尝试。
如果这些都很好,仍然在SSISDB中失败,我会尝试使用CMD的Windows调度程序任务(DTEXUI / File /&#39; Package Path&#39;)。如果谈论Windows调度程序是不相关的,请道歉。
答案 2 :(得分:1)
前段时间我遇到了类似的问题:在加载文件之前,我必须将文件从服务器复制到执行SSIS的文件。
如果程序包配置为仅使用本地目录,则每次都有效。如果我手动启动它,它可以使用不同的机器。但是当谈到SQL Agent +不同的机器时,它失败了。
我认为通过在Visual Studio中爬行SQL日志和一些脚本来解决本地和AD帐户的问题。
我通过以下方式解决了这个问题:
这几乎每年都在工作,没有一个问题。
答案 3 :(得分:1)
在答案和评论中发布了很多猜测和红色鲱鱼。它与SQL代理代理,映射驱动器,MSDB或sysadmin无关。最终从您的问题中收集到,SQL Agent中的执行很好,只需通过右键单击Integration Services目录以交互方式运行它即可。
问题的最后部分表明了根本原因:
我们可以将Package配置为通过代理帐户运行。
交互式用户(右键单击目录)没有权限,您需要一种从目录中作为具有权限的其他用户运行的方法。
只是为了确认:如果您在SSIS日志中单击查看上下文,它将显示它运行的用户,这将与SQL Agent成功执行的包执行不同。
我挖掘了目录中的执行和配置菜单以及create_execution
sp,我没有看到任何方式以不同的用户身份运行它。
我有两点建议:
答案 4 :(得分:1)
我遇到了类似的错误。尝试使用文件系统任务将文件从一个文件夹移动到另一个文件夹,并得到以下错误消息和
解决方案: 创建连接管理器以指向源文件位置,然后 创建一个名为“ DesVariable”的变量以显示目标文件路径(例如C:\ abc)。在文件系统中,任务属性设置以下内容
IsSourcePathVariable:否 SourceConnection:SourceFileConnectionManager
IsDestinationPathVariable:True DestinationVariable:DesVariable
然后经历了
[移动/复制文件-文件系统任务属性]
答案 5 :(得分:0)
我有一个类似的错误。在遵循上面Hadi的回答之后,我得到了部分解决方案。文件系统任务可以从NT SERVICE \ SQLSERVERAGENT作为调用者使用,但不能使用我的用户帐户。所以我想这还是许可问题。
一个不相关的问题,可能只是我,是我不小心使用了Projection.Connections而不是Package.Connections,但我只部署了软件包,而不是整个项目。修复了该问题,并且SQL Server代理作业有效。