我們可以通過數據復制跨局域網Internet在不同的數據庫服務器上面維護多個數據的多個拷貝同時以同步或異步的方式保證各個拷貝之間的數據一致性
SQL Server提供完善的內置數據復制能力它是SQL Server核心引擎非常重要的一部分
SQL Server的復制分為三種方式
快照復制在某個時間點對於出版數據庫中的數據照相然後將其復制到定購服務器上一般用於復制靜態表
事務復制復制的內容是多條語句和存儲過程這樣定購數據庫只是讀取數據庫的數據修改方式並且反映這種修改一般用戶更新頻率較高的數據庫
合並復制允許定購者和出版者的雙向修改並將修改反映到雙方數據庫上如果數據有沖突將會按照一定規則處理該沖突
目前單位有用到一個web網站數據庫分別位於美國荷蘭和深圳在網站基礎架構上我們使用的是DNS和BigIP實現智能域名解析和負載均衡但由於三地具備各自的數據庫(SQL Server)需要保證各個數據庫的數據一致我們就需要做數據復制根據用戶的要求我們做的是事務復制在網站的前兩個版本都很正常但在上兩周更新了web頁面版本後發現事務復制經常出現錯誤重新做事務復制在間隔不長的時間後仍然出現後檢查錯誤日志發現提示
The query processor could not produce a query plan from the optimizer because a query cannot update a text ntext or image column and a clustering key at the same
檢查數據庫表格經過排查確定存在問題的一個表格(XXX_article)和程序員確認後發現此表格屬性變更為ntext類型而且會同時更新此字段和此表的聚集索引欄位
因此懷疑是由於在做事務復制時會同時修改這兩處位置造成查閱相關的數據未能找到明確的官方說明但是有其他程序的人員在程序編碼中發現類似問題其解決方法是分成兩次update這個兩個欄位具體的技術細節未能得到明確的說明在事務復制上我們無法干擾其過程因此我們將不對xxx_article做事務復制然後對於xxx_article做快照復制這樣可以避免此問題的產生經過測試和應用此問題已經得到解決
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22297.html