在「快照式複寫/交易式複寫」於建立「快照集(Snapshot)」期間,將設置「共用鎖定(share locks)」於發行集內所有資料表,其目的是避免去更新正在發行中的資料表。
若要避開「共用鎖定(share locks)」所造成的影響,可以使用幾個方式:
- 「並行快照集處理(Concurrent Snapshot Processing)」、「資料庫快照集(database snapshot)」。
- 調整複寫預存程序 sp_addpublication 的 @sync_method參數來達成:concurrent、database snapshot。
- 使用「並行快照集處理(Concurrent Snapshot Processing)」(此為交易式複寫的預設行為)。
- 在建立整個快照集期間,不會產生「共用鎖定(share locks)」,這可以讓使用者在複寫於建立與初始化快照集期間,不受到影響繼續作業。
- 產生所有資料表的原生模式大量複製程式輸出,但在快照集期間,不鎖定資料表。
- 只支援交易式發行集使用這個項目。 不支援 Oracle 發行者使用這個值。
(2)使用「資料庫快照集(database snapshot)」
- 從資料庫快照集產生所有資料表的原生模式大量複製程式輸出。
- SQL Server 2005 Enterprise版本,開始支援資料庫快照,並非每一個版本都可以使用。
- SQL Server 2016 SP1 Enterprise、Standard、Web、Express with Advanced Services、Express等版本,開始支援。
示範環境
SQL Server 2016 SP1 Enterprise Edition
(1)「快照式複寫」的發行集,sp_addpublication 的 @sync_method參數,預設使用:native
-- 31_快照式複寫_發行集_Native
使用 SQL Trace 觀察「DatabaseName」
- Application Name:Snapshot BCP thread #3 for publication Pubs_Tran
- DatabaseName: pubs
-- 32_Trace_快照式複寫_發行集_Native
-- 33_Trace_快照式複寫_發行集_Native
-- 34_系統檢視表_快照式複寫_發行集_Native
(2)「交易式複寫」的發行集,sp_addpublication 的 @sync_method參數,預設使用:concurrent
-- 41_交易式複寫_發行集_concurrent
-- 42_交易式複寫_發行集_database snapshot
使用 SQL Trace 觀察「DatabaseName」
- ApplicationName:Snapshot BCP thread #3 for publication NW_Snapshot
- DatabaseName: Replicatin Snapshot - NW_Snapshot - Northwind
-- 43_交易式複寫_發行集_database snapshot
-- 44_系統檢視表_交易式複寫_發行集_database snapshot
參數說明
錯誤訊息
訊息 14100,層級 16,狀態 1,行 142
當使用並行的快照集處理來訂閱發行集時,請指定所有的發行項。
參考資料
異動複寫
https://msdn.microsoft.com/zh-tw/library/ms151176.aspx
交易式複寫的運作方式
https://technet.microsoft.com/zh-tw/library/ms151706(v=sql.105).aspx
sp_addpublication (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms188738(v=sql.105).aspx
SQL Server 2012 版本支援的功能
https://msdn.microsoft.com/zh-tw/library/cc645993(v=sql.110).aspx
Transactional FAQs
http://www.replicationanswers.com/transactional.asp
sp_changepublication (Transact-SQL)
https://msdn.microsoft.com/zh-tw/library/ms188413.aspx
sp_addsubscription
https://msdn.microsoft.com/zh-tw/library/ms181702.aspx
Does Transactional Replication Include Structural Changes Made to a Database
http://www.sql-server-performance.com/2015/transactional-replication-replicates-the-structural-changes/
Adding Article in Existing Tranactional Replication -- Step by Step
http://ansqldba.blogspot.tw/2012/02/adding-new-article-to-existing.html
Specify all articles when subscribing to a publication using concurrent snapshot processing.
https://blogs.msdn.microsoft.com/repltalk/2012/04/04/specify-all-articles-when-subscribing-to-a-publication-using-concurrent-snapshot-processing/
SQL Server Transacational Replication Issue while adding a new article
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/4e57cc76-8ed4-4b27-b5f0-35b60a239b2d/sql-server-transacational-replication-issue-while-adding-a-new-article?forum=sqlreplication
Replication – Snapshot is not getting generated
https://learnsqlteam.com/2016/05/26/replication-snapshot-issue/
資料庫快照集 (SQL Server)
https://msdn.microsoft.com/zh-tw/library/ms175158.aspx
How to use ‘database snapshot’ sync_mode while creating a new Tran/snapshot publication using sp_addpublication
https://blogs.msdn.microsoft.com/mangeshd/2008/05/30/how-to-use-database-snapshot-sync_mode-while-creating-a-new-transnapshot-publication-using-sp_addpublication/
資料庫快照集 (Database Snapshot) 壞了、損毀,對於原本資料庫的影響?
http://sharedderrick.blogspot.tw/2008/09/database-snapshot.html
沒有留言:
張貼留言