我們在我們的生產環境中有一個大型數據庫(100 GB),我們有兩個鏡像。我們使用複製來同步我們的鏡像數據庫(SQL Server 2012上的事務複製)Sql Server複製和標識列
當我們創建複製時,我們的DBA首先從我們的服務器下載完整備份並在鏡像服務器上恢復它,然後配置Publisher -DB)和訂戶(鏡像-1)。一切工作正常,鏡像和生產完美同步。
在每次發佈之前,我們應該使用REAL在我們的UAT服務器上測試我們的系統!數據。所以我們從我們的一個鏡像服務器(現場鏡像)創建備份並將其還原到我們的UAT數據庫。
在我們的數據庫中的所有表有一個PK,如:
[ID] [int] IDENTITY(1,1) NOT NULL
在我們的UAT數據庫OrderTransaction表ID = 160.000.000的最後一個記錄,但是當我們的應用程序嘗試插入到這個表,系統遭遇引發了一個問題和例外。
違反PRIMARY KEY約束'ID'。不能在對象中插入重複鍵...
系統多試160.000.000(ID = 145.695.000) 我查詢的數據庫這個ID是最後一個ID插入一個整數值較小時的備份生產數據庫恢復到鏡像數據庫並在事務複製啓動之後。 有關生產和鏡像的所有信息都將同步正確,並且兩臺服務器上的表的ID相同且完全相同。
當我在UAT運行此命令或鏡像數據庫是因爲我讀的MSDN,博客和相關的SO問題,這個問題涉及到複製和標識列返回145.695.000
SELECT IDENT_CURRENT('OrderTransaction')
。
但是,我如何強制我們的鏡像數據庫增加其生產身份(並接受這個值作爲本地身份值)。或者可能我們應該編寫一個腳本,爲我們的UAT環境中的每個表格進行測試!?
謝謝。
謝謝, 我正在嘗試編寫腳本,查找所有具有標識ID列並將它們重新設置的表,但在我看來它應該是最後一個解決方案。可能應該有一些方法可以通過SQL Server複製設置以自動方式進行此操作。 – Navid 2014-10-18 20:49:04
該腳本應該非常簡潔。以防萬一,我會發布一條消息。 – 2014-10-18 21:00:31