导入表和存储过程

时间:2012-05-11 00:14:38

标签: sql import sql-server-2008-r2

我正在尝试将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'

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

2 个答案:

答案 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.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

答案 1 :(得分:0)

如果要将整个数据库导入生产,您也可以使用替换生产数据库进行恢复。

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