SQL Server復(fù)制用備份文件初始化訂閱
下面為您介紹一個SQL Server復(fù)制用備份文件初始化訂閱的方法,該方法供您參考,如果您遇到過類似方面的問題,不妨一看。
這是一個讓我覺得頭疼的blog記錄,弄了半天我還是很暈,其實也許結(jié)果就是我折騰的那個樣子,但我折騰出來的結(jié)果感覺實在是覺得有點麻煩。默認創(chuàng)建的訂閱都是用快照初始化的,但是也可以不使用快照來初始化訂閱,而使用數(shù)據(jù)庫備份來初始化。至于原因msdn有如下描述對使用這種初使化的方式:
在某些方案中,例如涉及大型初始數(shù)據(jù)集的方案中,***用其他方法初始化訂閱。初始化訂閱服務(wù)器的其他方法包括:
指定備份。還原訂閱服務(wù)器上的備份,然后分發(fā)代理將SQL Server復(fù)制任何所需的復(fù)制元數(shù)據(jù)和系統(tǒng)過程。使用備份進行初始化是向訂閱服務(wù)器傳遞數(shù)據(jù)最快的方法,而且也很方便,因為如果在啟用發(fā)布以使用備份進行初始化之后取得備份,則可以使用任何最近的備份。
我的理解就是當在SQL Server復(fù)制中,有需要初始化大型的訂閱數(shù)據(jù)庫的時候,就不要使用快照模式讓發(fā)布數(shù)據(jù)庫來自動初始化訂閱數(shù)據(jù)庫的數(shù)據(jù)和架構(gòu),用備份還原的方法,先將發(fā)布數(shù)據(jù)庫還原到訂閱服務(wù)器上,然后再進行事務(wù)復(fù)制這樣就只復(fù)制增量,而不用快照進行初始化SQL Server復(fù)制了。但是使用這種復(fù)制讓人覺得有個麻煩的地方,就是當發(fā)布數(shù)據(jù)庫的架構(gòu)發(fā)生了改變的時候,比如多添了表或者存儲過程視圖等的時候,如果又想在發(fā)布中包含這些添加的新項,就都得在訂閱服務(wù)器上再恢復(fù)一遍***的備份,還得在發(fā)布服務(wù)器上執(zhí)一遍初始化腳本,反正覺得挺麻煩的,如果是用快照的話,對數(shù)據(jù)架構(gòu)的如上的改變,只需要生成***的快照(初始化一下訂閱)即可。也許是我弄的不對吧,我自己目前也不太清楚,反正我試了半天,如果想用備份初始化訂閱就得主要步驟就得按如下的執(zhí)行:
- exec sp_addsubscription
- @publication = N'publicationname',
- @subscriber ='computername\sqlserverinstancename',
- @destination_db = N'subscription_database_name',
- @subscription_type = N'Push',
- @sync_type = N'initialize with backup',
- @article = N'all',
- @update_mode = N'read only',
- @subscriber_type = 0,
- @backupdevicetype='disk',
- @backupdevicename='g:\reptest\t.bak(backupfilepath)',
- @frequency_type = 1
1,先在發(fā)布屬性中的訂閱選項中,更改允許從備份文件初始化,默認的是不允許。(創(chuàng)建好發(fā)布修改即可,以后不用執(zhí)行)
2,對發(fā)布數(shù)據(jù)庫備份,然后在訂閱服務(wù)器上恢復(fù)這個備份
3,在發(fā)布數(shù)據(jù)庫中執(zhí)行如下的腳本,具體參數(shù)參見聯(lián)機文檔關(guān)于存儲過程sp_addsubscription的說明(每執(zhí)行一次第2步,也就是每次新備份了一次發(fā)布數(shù)據(jù)庫并在訂閱服務(wù)器上恢復(fù)了它,就要執(zhí)行一次這個腳本,依我的測試如果不執(zhí)行如下的腳本,只進行了備份恢復(fù),再運行訂閱的時候就會出錯,當然這也可能跟具體的情況有關(guān)),用備份文件進行初始化的訂閱只能使用如下腳本來創(chuàng)建跟初始化:
如果是***次運行這個腳本,執(zhí)行完之后創(chuàng)建的訂閱是運行在sqlserver agent的啟動賬戶下的,如果有必要需要修改成相應(yīng)的代理運行賬戶來執(zhí)行訂閱同步。
另外整個初始化過程可參見sqlserver聯(lián)機叢書
How to: Initialize a Transactional Subscriber from a Backup (Replication Transact-SQL Programming)
初始化事務(wù)訂閱(不使用快照)
【編輯推薦】