SQL脚本(存储过程),以促进这些新的表项很可能在这种情况下你最好的选择。
一些替代将是:
插入dev的身份进入生产表 - 这是有风险的,如果数据可以通过任何其他方法来插入。同样值得考虑的是,启用身份插入时发生的表锁定 - 您的最终用户在运行时可能无法查询生产表。这可以用语法来完成:
SET IDENTITY_INSERT [myTABLE] ON
INSERT INTO PROD.DBO.myTABLE (COL1,COL2,COL3)
SELECT COL1,COL2,COL3 FROM DEV.DBO.myTABLE WHERE...
SET IDENTITY_INSERT [myTABLE] OFF
这是关于此的KB。 http://technet.microsoft.com/en-us/library/ms188059.aspx
另一种选择是过滤从dev到prod的复制 - 只有在没有其他方法将数据插入到生产环境中时,才会起作用,并且如果dev条目可以在更改后更改他们被标记为批准 - 因为这些更改会立即复制到生产环境中,可能会影响最终用户。在这种情况下,您的生产表格不可修改。
这里是过滤的复制一个KB:http://technet.microsoft.com/en-us/library/ms146925(v=sql.105).aspx
理想的情况下,生产环境是从开发环境完全隔离 - 这意味着我刚刚提出的方案将不会被使用 - 但我将他们当作FYIs 。这就是说,假设你的表模式是相同的,你可以看看在生产中添加一个新的标识列,从而允许你将dev ID插入其中。
即:
dev.dbo.myTable
id int identity(1,1) primary key,
val1 int,
val2 int,
flag bit
prod.dbo.myTable
newid int identity(1,1) primary key, -- new column in prod
id int,
val1 int,
val2 int,
flag bit
您将需要添加一个新的身份,以每条生产表,所以每一个生产表将持有机号......和您的前端代码保持不变。如果模式更改是一个选项,这将是我的方法。
这将允许您从dev到prod进行直接插入,保持dev ID完好无损,并且还提供了一种将prod与dev同时匹配的方法。
希望这会有所帮助。