0

我有一些 SSIS 包可以将一些表从 Server1 复制到 Server2。现在我需要更新这个包来替换 Server1 为 Server3。我可以这样做还是必须删除包并重新创建?

在此先感谢埃利亚娜

4

1 回答 1

0

我可能误解了您最初的要求。保留旧答案,但我在下面添加了不同的方法。

原始方法

扩展@praveen 的评论

当你运行一个 SSIS 包时,有两种典型的这样做的机制。dtexecui 和 dtexec。前者是在 Windows 资源管理器中双击包时启动的,而后者是从命令行或 SQL 代理使用的。我发现使用 UI(SQL 代理或 Windows GUI)来构建命令行更容易。在您的情况下,您将覆盖 Server2 上连接字符串的值。另请参阅 在不同时间执行具有不同参数的相同 SSIS 包

如果包需要将数据从 Server1 复制到两个目标(Server2Server 3),那么您将需要使用配置运行该作业两次以切换目标或修改包以同时写入两个目标。

  1. 在 Visual Studio/SSDT 中创建一个新的 SSIS 项目
  2. 从 SQL Server 下载包。将部署在 SQL Server 上的 SSIS 包复制回 Visual Studio 2008
  3. 将下载的包添加到项目中
  4. 打开包,添加一个连接管理器到Server3
  5. 在数据流任务中,在现有目标之前插入一个多播转换。
  6. 将现有目标重新连接到多播
  7. 拖动一个新的目标组件(很可能是 OLE DB 目标)并将其连接到多播
  8. 测试
  9. 将包部署回 SQL Server

更新方法

在重读请求时,我相信您的愿望是更改来源,而不是添加额外的目的地。当前进程是从 Server1 到 Server 2 的数据。所需状态是从 Server3 到 Server2。您的包裹可能看起来像

在此处输入图像描述

重要的是连接管理器的名称。目前,Server1 的名称嵌入在SourceConnectionOLEDB. 您将希望 SQL 代理在运行时覆盖该值。

在当前 SQL 代理作业中,单击“数据源”选项卡(除非您使用的是 2012,否则您将寻找“高级”选项卡)检查SourceConnectionOLEDB连接管理器,然后将 Server1 的值替换为 Server3

在此处输入图像描述

命令行选项卡应该看起来像

/FILE "\\serverB\c$\temp\Simple.dtsx"  /CONNECTION SourceConnectionOLEDB;"\"Data Source=SERVER3;Initial Catalog=SRC;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=false;\"" /CHECKPOINTING OFF /REPORTING E
于 2012-08-06T12:54:36.813 回答