我正在尝试将SQL Server 2008 R2中的表[大约40]和存储过程[大约120+]从dev服务器导出到prod服务器。
我创建了一个.sql
文件[右键单击SSMS中的数据库,选择Tasks -> Generate Scripts
],但是当我尝试将表和存储过程导入prod服务器时[右键单击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'
知道我做错了什么或应该做什么?提前谢谢。
答案 0 :(得分:3)
您当前的技术存在的问题是假设您的目标是一个空数据库。所以它会重新插入所有内容而不会尝试合并数据,这就是导致重复主键的原因。如果您使用Management Studio,则必须自己完成所有数据合并。
我的建议是首先调查redgate它不是免费的,但是你会保存它的所有时间都是值得的。您将需要同时使用SQL Compare和Data Compare(http://www.red-gate.com/products/sql-development/sql-data-compare/)。
另一种方法是使用Visual Studio 2010 premium(http://msdn.microsoft.com/en-us/library/aa833435.aspx和http://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。
答案 1 :(得分:0)
如果要将整个数据库导入生产,您也可以使用替换生产数据库进行恢复。
120 SP和20个表似乎是整个数据库。所以应该用replace替换。