如何设置'启用身份插入'在SQL Server中导入数据期间一次性对所有表?

时间:2017-11-04 20:17:25

标签: sql-server ssms

我正在尝试从远程服务器复制数据库。我无法访问其备份或文件系统。我的开发机器上的目标数据库需要获取所有数据以及相同的表结构,包括具有标识设置的主键和其余约束。

导入/导出工具可以选择设置身份插入,如下所示,但我必须每个表手动执行此操作。我有300多个表要复制,其中大多数都有身份主键。多次复制这个过程将非常痛苦。

有没有办法为所有表一次设置此标识插入设置?或者在这种设置中复制数据库的其他一些可靠方法? 我正在使用SSMS 7.3来对抗SQL Server 2014。

enter image description here

2 个答案:

答案 0 :(得分:0)

我使用Toad进行数据比较,并为数据生成了插入语句。每个表的每个插入组都包含在将IDENTITY_INSERT设置为ON然后设置为OFF之间。蟾蜍是商品,但有试用期。

答案 1 :(得分:0)

我认为您可以通过使用具有默认标识插入的OLE DB源/目标组件创建导入包来执行您想要的操作。将其保存到包文件而不是立即执行。在文本编辑器中打开包源,并使用标识列更改目标表的FastLoadKeepIdentity属性。

下面是需要为每个表更改的包源的xml片段。以下是需要更改的属性:

            <property
              dataType="System.Boolean"
              description="Indicates whether the values supplied for identity columns will be copied to the destination. If false, values for identity columns will be auto-generated at the destination. Applies only if fast load is turned on."
              name="FastLoadKeepIdentity">true</property>

使用dtexec.exe命令行实用程序或dtexecui.exe图形工具运行修改后的程序包。这样您就可以轻松地重复复制,而无需再次通过导入/导出向导。