繁体   English   中英

在服务器之间复制文件时出现 SSIS 文件系统任务错误

[英]SSIS File System Task Error while copying files between servers

我可以在两台服务器之间复制文件,比如手动服务器 A 和服务器 B,我对任一侧的文件夹都有权限。

我正在使用文件系统任务来复制文件。

当我的源和目标在服务器中时,包在 Visual Studio 和 SSISDB 中工作正常。

当我的源和目标位于不同的服务器中时,包在 Visual Studio 中工作正常,但包在 SSISDB 中失败。 它说访问被拒绝。 我的帐户映射到 SSISDB。

解决这个问题的任何想法。

该包使用 SQL Server 代理作业运行良好。 该作业通过代理帐户运行。

我们可以通过任何方式将包配置为通过代理帐户运行。

错误截图

在此处输入图片说明

首先@Nick.McDermaid 在评论中提供了一个非常有用的链接,以了解有关Integration Services Catalog 使用哪些用户凭据来执行包的更多信息?

建议的解决方案

经过搜索有很多问题可能会导致此问题,因此我将提供许多可以解决您问题的解决方案。

运行包 SSISDB 时

1. SQL Server 账户权限

在指定路径上为您登录的帐户添加读写权限

2.为Network账号添加windows身份验证

您可以为网络帐户添加 Windows 身份验证登录(在 sql server 代理中用作代理)并使用它运行包。

从 SQL 代理运行包时

这不是您的情况,但这些信息可能会有所帮助

1. SQL Server 账户权限

为指定路径上的以下帐户添加读写权限:

  • NT SERVICE\\SQLSERVERAGENT
  • NT SERVICE\\MSSQLSERVER

2. 设置代理

您可以为 SSIS 包设置代理并使用该代理帐户运行作业。

您可以参考以下链接之一以了解更多信息:

3. 将网络驱动器映射到 SQL Server 实例

一些文章建议映射您在 SQL Server(而不是操作系统)上使用的网络驱动器。您可以参考以下链接之一以了解更多信息:

4. 添加系统管理员角色

将 SysAdmin 角色添加到以下帐户:

  • NT SERVICE\\SQLSERVERAGENT
  • NT SERVICE\\MSSQLSERVER

其他链接有类似问题

您是否查看过域帐户对 MSDB 的权限。 我会遵循这些步骤。 我有类似的问题

1)在服务器中部署包(正如您已经完成的那样)

2) 确保包已加载并在 SSISDB 下的集成服务目录中可用

3)重新部署项目并尝试。

如果这些都很好,仍然在 SSISDB 中打包失败,我会尝试使用 CMD(DTEXUI/文件/“包路径”)的 Windows 调度程序任务。 如果谈论 Windows 调度程序无关紧要,请道歉。

前段时间我遇到了类似的问题:在加载文件之前,我必须将文件从服务器复制到执行 SSIS 的服务器。

如果包被配置为只使用本地目录,它每次都能工作。 如果我手动启动它,它可以在不同的机器上工作。 但是当涉及到 SQL Agent + 不同机器时,它失败了。

通过在 Visual Studio 中抓取 SQL 日志和一些脚本,我认为这是本地和 AD 帐户的问题。

我通过以下方式解决了这个问题:

  1. 创建一个非交互式用户帐户,我在 SSIS 机器上授予了足够的权限(SQL Server 上的系统管理员或多或少,服务器上的文件夹访问权限很少......适合您的需要)
  2. 授予此帐户访问其他服务器文件夹的权限(通过 ACL)
  3. 更新我的 SQL 代理服务以使用这个“合法”的 AD 帐户
  4. 完毕 !

近一年以来,这每天都在工作,没有任何问题。

发布的答案和评论中有很多猜测和红鲱鱼。 它与 SQL 代理代理、映射驱动器、MSDB 或系统管理员无关。 正如最终从您的问题中收集到的那样,SQL Agent 中的执行很好,只是当您通过右键单击 Integration Services 目录以交互方式运行它时才会出现问题。

您问题的最后一部分表明根本原因在这里被理解:

我们可以通过任何方式将包配置为通过代理帐户运行。

交互式用户(在目录上单击鼠标右键)没有权限,您需要一种方法来作为具有权限的不同用户从目录中运行。

只是为了确认:如果您在 SSIS 日志中单击查看上下文,它将向您显示它以哪个用户身份运行,这与 SQL 代理的成功包执行不同。

我仔细研究了目录中的执行和配置菜单以及create_execution sp,我没有看到任何以不同用户身份运行它的方法。

我有两个建议:

  1. 启动 SSMS 时使用运行身份并以其他用户身份运行
  2. 只需将包包装在 SQL 代理中,它允许您使用其他帐户来运行包(SQL 代理服务帐户或代理)

我遇到了类似的错误。 尝试使用文件系统任务将文件从一个文件夹移动到另一个文件夹并收到以下错误消息和

解决方案:创建连接管理器以指向源文件位置并创建一个名为“DesVariable”的变量以显示目标文件路径(例如)C:\\abc。 在文件系统中,任务属性设置如下

IsSourcePathVariable: False SourceConnection : SourceFileConnectionManager

IsDestinationPathVariable: True DestinationVariable: DesVariable

然后就通过了

[移动/复制文件-文件系统任务属性]

文件系统任务属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM