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同時匹配的方法。
希望這會有所幫助。