Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SSI在SQL Server之间复制数据_Sql Server_Ssis - Fatal编程技术网

Sql server 使用SSI在SQL Server之间复制数据

Sql server 使用SSI在SQL Server之间复制数据,sql-server,ssis,Sql Server,Ssis,我需要将3000多行从一个SQL Server实例复制到另一个实例 目标具有实时网站使用的现有数据 使用SSIS中的数据流,插入了一个传输,该传输使用SQL视图从源获取数据,然后将其导入到目标表中。这确保了数据在我们的外部站点上保持最新 我想要实现的是,如果由于任何原因SSIS失败,目标表不会保留为空,从而破坏外部站点的功能 由于包中只使用了一个任务,SSI会将此任务设为原子任务吗?i、 e.如果在复制数据时失败,则不会使目标表为空或部分完成 更新: 多亏了那些指出“Replace”没有意义的人

我需要将3000多行从一个SQL Server实例复制到另一个实例

目标具有实时网站使用的现有数据

使用SSIS中的数据流,插入了一个传输,该传输使用SQL视图从源获取数据,然后将其导入到目标表中。这确保了数据在我们的外部站点上保持最新

我想要实现的是,如果由于任何原因SSIS失败,目标表不会保留为空,从而破坏外部站点的功能

由于包中只使用了一个任务,SSI会将此任务设为原子任务吗?i、 e.如果在复制数据时失败,则不会使目标表为空或部分完成

更新: 多亏了那些指出“Replace”没有意义的人——这是我们之前使用Copy Object函数的一次尝试

当前使用副本时,它将放入3000行,但下次运行时,它将再次放入相同的3000行!我需要做的是有以下几点

  • 将现有目标数据保存在安全的地方,以防出现问题
  • 截断目标表
  • 从源复制数据
  • 如果出现任何错误,请截断目标表并导入备份的数据

在SSIS中执行此操作的最佳方法是什么?

我有一个任务失败(例如pk冲突),并且复制的行没有回滚,我必须在重新启动任务之前删除它们

你应该测试一下

我也不知道你说的“替换”是什么意思


您要替换现有行吗?更新现有行?

听起来像是在寻找一个事务,如果在此过程中出现任何故障,该事务将回滚(撤消)

要么全力以赴,要么一事无成

SSIS可以很好地处理事务。

描述了一种类似于您的情况,首先删除一些行

其中一个重要步骤是:

包中存在TransactionOption属性 液位,容器液位(例如,对于回路, Foreach循环、序列等),以及 就像任何控制流任务一样 (例如,执行SQL任务、数据流) 任务等)。TransactionOption可以是 设置为以下选项之一:


而不是一个填充和填充策略,考虑合并数据。

  • 让我们调用原始表基
  • 创建一个STG表格,其列集与原始表格相同
  • 截断并导入到STG中
  • 使用来自STG的任何新数据更新BASE(通过业务密钥加入)
  • 从不存在的STG插入底座

此方法具有零停机时间和无缝集成的优点。

您所说的“使用替换将其导入目标表”是什么意思?你能为每一步提供一些DDL来显示你在做什么吗?我现在更新了这个问题,我错误地说它是一个替换,因为这是我之前尝试过的
* Required - if a transaction exists join it else start a new one
* Supported - if a transaction exists join it (this is the default)
* NotSupported - do not join an existing transaction