程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server復制原理及注意事項

SQL Server復制原理及注意事項

編輯:關於SqlServer

以兩個復制服務器A,B雙向復制為模型

SQL Server的復制分為三種:

1. 快照復制

A每隔一段時間將B中的相應表中的數據全部刪除,然後將自己相應表中的

全部插到B中。此種方式顯然不適合我們的應用,不予考慮。

2. 事務復制

對A中的每一個滿足復制條件的事務,每隔一定時間A都應用到B上,反之亦然。SQL Server 通過把數據傳給三個存儲過程(插入,刪除,修改)進行數據的修改,我們可以根據自己的應用改寫此存儲過程。

存在缺陷:如果從A到B的復制條件和從B到A復制條件相同的話,會產生“踢皮球”的循環現象。既一系列事務應用於A,A會把這些事務應用於B,B收到這一系列事務後,又會把它應用於A……如此循環。

3. 合並復制

每隔一段時間,復制將會把數據庫A,B中需要復制的數據合並一下,使得AB中的數據完全一樣,數據都是AB數據庫中數據的全體數據。如果A和B中數據主鍵有沖突,則根據優先級只選其中一條數據。

需要注意:為了區分數據來自於哪個地點,SQL Server會將每一個需要復制的表中另加一個字段,在編程時應該注意。

SQL Server復制的缺陷:

SQL Server 每隔一定時間進行一次復制,如果找不到另一台SQL Server(比如因為網絡故障,或是另一台SQL Server沒有啟動),經過n(默認為10)次連接後,它的復制功能將會down掉,直至有人將復制功能啟動。 需要復制的表中如果在復制之前就有數據,在建立復制時比較麻煩(sql server不提供此類問題的解決方法,需要手動完成)。因此,需要復制的表在使用過程中不能經常變動表結構。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved