我需要更新存储在SQl Server中的一些包

时间:2012-08-06 06:31:09

标签: ssis

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

提前致谢 埃利安娜

1 个答案:

答案 0 :(得分:0)

我可能误解了您的原始请求。保留旧的答案,但我在下面添加了一个不同的方法。

原创方法

扩展@ praveen的评论

运行SSIS包时,有两种典型的机制可以执行此操作。 dtexecui和dtexec。前者是在Windows资源管理器中双击包时启动的,而后者是从命令行或SQL代理使用的。我发现使用UI(SQL代理或Windows GUI)构建命令行更容易。在您的情况下,您将覆盖Server2上的连接字符串的值。也可以看看 Executing the same SSIS Package with different parameters at different time

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

  1. 在Visual Studio / SSDT中创建一个新的SSIS项目
  2. 从SQL Server下载程序包。 Copying SSIS packages deployed on SQL Server back to Visual Studio 2008
  3. 将下载的包添加到项目中
  4. 打开包并将Connection Manager添加到Server3
  5. 在数据流任务内,在现有目标之前插入多播转换。
  6. 将现有目标重新连接到多播
  7. 拖动新目标组件(很可能是OLE DB目标)并将其连接到多播
  8. 测试
  9. 将程序包部署回SQL Server
  10. 更新方法

    在重新阅读请求时,我相信您的愿望是更改源,而不是添加其他目标。当前进程是来自Server1的数据进入服务器2.所需状态是Server3到Server2。您的包可能看起来像

    enter image description here

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

    在当前的SQL代理作业中,单击“数据源”选项卡(除非您在2012年,然后您将要查找“高级”选项卡)检查SourceConnectionOLEDB连接管理器和然后用Server3

    替换Server1的值

    enter image description here

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

    /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