如何将具有标识的一个表复制到另一个SQL Server

时间:2016-11-15 09:43:37

标签: sql-server tsql alter-table

我被要求将现有表格复制到另一台服务器,但在我重新创建表格时,似乎无法直接插入。

var obj = {
  fooFn: function() {console.log("this = ", this)}
}

obj.fooFn() // => prints "this = [Object]"

var boundFn = obj.fooFn.bind("bar")
boundFn() // => prints "this = 'bar'"

上面是原始代码,我尝试做的是复制它并在不同的服务器/数据库[CHH-BI]上重新创建。[CommDB]。

我这样做并尝试将插入全部插入到上一个新表中,但是出现了错误

  

Msg 8101,Level 16,State 1,Line 4
  表格中的标识列的显式值' CommDB.dbo.tblRadiologyData'只能在使用列列表且IDENTITY_INSERT为ON时指定。

我是以错误的方式解决这个问题还是错过了什么?我认为创建同一个表并将所有内容从旧版本复制到新版本只是一项直接的工作!

3 个答案:

答案 0 :(得分:2)

根据定义,标识字段不允许您在该列中插入值,它将自己命名。如错误消息所示,您可以打开IDENTITY_INSERT以允许此操作,然后在插入完成后将其关闭。

您想要的语法就是这个;

SET IDENTITY_INSERT TableName ON

不建议在生产服务器上使用,但如果您只是为测试而执行此操作,请坚持使用它。

您的另一个选择是将此字段设为INT,而不用担心它会自动为您创建身份。

答案 1 :(得分:2)

你可以试试这个:

SET IDENTITY_INSERT TableName ON

SELECT * INTO targetTable 
FROM [sourceserver].[sourcedatabase].[dbo].[sourceTable]

答案 2 :(得分:1)

如果你在带有任务的SQL Server Management Studio中执行 - >导出数据...一路上有一个按钮 - Edit mappings显示高级属性,你可以在其中找到Enable identity insert复选框