新聞中心
下面為您介紹一個(gè)SQL Server復(fù)制用備份文件初始化訂閱的方法,該方法供您參考,如果您遇到過(guò)類似方面的問(wèn)題,不妨一看。

這是一個(gè)讓我覺(jué)得頭疼的blog記錄,弄了半天我還是很暈,其實(shí)也許結(jié)果就是我折騰的那個(gè)樣子,但我折騰出來(lái)的結(jié)果感覺(jué)實(shí)在是覺(jué)得有點(diǎn)麻煩。默認(rèn)創(chuàng)建的訂閱都是用快照初始化的,但是也可以不使用快照來(lái)初始化訂閱,而使用數(shù)據(jù)庫(kù)備份來(lái)初始化。至于原因msdn有如下描述對(duì)使用這種初使化的方式:
在某些方案中,例如涉及大型初始數(shù)據(jù)集的方案中,***用其他方法初始化訂閱。初始化訂閱服務(wù)器的其他方法包括:
指定備份。還原訂閱服務(wù)器上的備份,然后分發(fā)代理將SQL Server復(fù)制任何所需的復(fù)制元數(shù)據(jù)和系統(tǒng)過(guò)程。使用備份進(jìn)行初始化是向訂閱服務(wù)器傳遞數(shù)據(jù)最快的方法,而且也很方便,因?yàn)槿绻趩⒂冒l(fā)布以使用備份進(jìn)行初始化之后取得備份,則可以使用任何最近的備份。
我的理解就是當(dāng)在SQL Server復(fù)制中,有需要初始化大型的訂閱數(shù)據(jù)庫(kù)的時(shí)候,就不要使用快照模式讓發(fā)布數(shù)據(jù)庫(kù)來(lái)自動(dòng)初始化訂閱數(shù)據(jù)庫(kù)的數(shù)據(jù)和架構(gòu),用備份還原的方法,先將發(fā)布數(shù)據(jù)庫(kù)還原到訂閱服務(wù)器上,然后再進(jìn)行事務(wù)復(fù)制這樣就只復(fù)制增量,而不用快照進(jìn)行初始化SQL Server復(fù)制了。但是使用這種復(fù)制讓人覺(jué)得有個(gè)麻煩的地方,就是當(dāng)發(fā)布數(shù)據(jù)庫(kù)的架構(gòu)發(fā)生了改變的時(shí)候,比如多添了表或者存儲(chǔ)過(guò)程視圖等的時(shí)候,如果又想在發(fā)布中包含這些添加的新項(xiàng),就都得在訂閱服務(wù)器上再恢復(fù)一遍***的備份,還得在發(fā)布服務(wù)器上執(zhí)一遍初始化腳本,反正覺(jué)得挺麻煩的,如果是用快照的話,對(duì)數(shù)據(jù)架構(gòu)的如上的改變,只需要生成***的快照(初始化一下訂閱)即可。也許是我弄的不對(duì)吧,我自己目前也不太清楚,反正我試了半天,如果想用備份初始化訂閱就得主要步驟就得按如下的執(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ā)布屬性中的訂閱選項(xiàng)中,更改允許從備份文件初始化,默認(rèn)的是不允許。(創(chuàng)建好發(fā)布修改即可,以后不用執(zhí)行)
2,對(duì)發(fā)布數(shù)據(jù)庫(kù)備份,然后在訂閱服務(wù)器上恢復(fù)這個(gè)備份
3,在發(fā)布數(shù)據(jù)庫(kù)中執(zhí)行如下的腳本,具體參數(shù)參見(jiàn)聯(lián)機(jī)文檔關(guān)于存儲(chǔ)過(guò)程sp_addsubscription的說(shuō)明(每執(zhí)行一次第2步,也就是每次新備份了一次發(fā)布數(shù)據(jù)庫(kù)并在訂閱服務(wù)器上恢復(fù)了它,就要執(zhí)行一次這個(gè)腳本,依我的測(cè)試如果不執(zhí)行如下的腳本,只進(jìn)行了備份恢復(fù),再運(yùn)行訂閱的時(shí)候就會(huì)出錯(cuò),當(dāng)然這也可能跟具體的情況有關(guān)),用備份文件進(jìn)行初始化的訂閱只能使用如下腳本來(lái)創(chuàng)建跟初始化:
如果是***次運(yùn)行這個(gè)腳本,執(zhí)行完之后創(chuàng)建的訂閱是運(yùn)行在sqlserver agent的啟動(dòng)賬戶下的,如果有必要需要修改成相應(yīng)的代理運(yùn)行賬戶來(lái)執(zhí)行訂閱同步。
另外整個(gè)初始化過(guò)程可參見(jiàn)sqlserver聯(lián)機(jī)叢書(shū)
How to: Initialize a Transactional Subscriber from a Backup (Replication Transact-SQL Programming)
初始化事務(wù)訂閱(不使用快照)
文章題目:SQLServer復(fù)制用備份文件初始化訂閱
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/cdgpdpo.html


咨詢
建站咨詢
