0

我正在尝试将 SQL Server 2008 R2 中的表 [大约 40 个] 和存储过程 [大约 120+] 从开发服务器导出到产品服务器。

我创建了一个.sql文件 [右键单击 SSMS 中的数据库,选择Tasks -> Generate Scripts],但是当我尝试将表和存储过程导入产品服务器时 [右键单击 SSMS 中的数据库,New Query然后复制内容] 它是给我一长串错误

大多

There is already an object named 'tblMyTable' in the database
Violation of PRIMARY KEY constraint 'PK_MyTable'. Cannot insert duplicate key in object 'dbo.tblMyTable'

知道我做错了什么或应该做什么吗?提前致谢。

4

2 回答 2

3

您当前技术的问题是假设您的目标是一个空数据库。因此,它将重新插入所有内容,而不会尝试合并数据,这就是导致重复主键的原因。如果您使用 Management Studio,您必须自己完成所有数据合并。

我的建议是首先查看 redgate 它不是免费的,但您将一直保存它是值得的。您将需要同时使用 SQL 比较和数据比较 ( http://www.red-gate.com/products/sql-development/sql-data-compare/ )。

另一种选择是使用 Visual Studio 2010 高级版(如果有的话)(http://msdn.microsoft.com/en-us/library/aa833435.aspxhttp://msdn.microsoft.com/en-us/library/ dd193261.aspx)。这提供了数据比较和模式比较选项。它不如redgate,但我发现它大部分时间都有效。

如果您正在寻找免费的替代品,请查看此堆栈帖子https://stackoverflow.com/questions/377388/are-there-any-free-alternatives-to-red-gates-tools-like-sql-compare

于 2012-05-11T01:15:11.713 回答
0

如果您要将整个数据库导入到生产环境中,您还不如通过替换来恢复生产数据库。

120 个 SP 和 20 个表似乎是整个数据库。所以应该用替换来恢复。

于 2012-05-11T01:23:58.383 回答