欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server 2005 數(shù)據(jù)庫(kù)復(fù)制詳細(xì)介紹

 更新時(shí)間:2014年08月11日 00:20:12   作者:杜飛  
這篇文章主要介紹了SQL Server 2005 數(shù)據(jù)庫(kù)復(fù)制技術(shù),有時(shí)候我們需要將數(shù)據(jù)庫(kù)備份一份到別的服務(wù)器上,防止突發(fā)情況

對(duì)于一個(gè)地域分散的大型企業(yè)組織來(lái)說(shuō),構(gòu)建具有典型的分布式計(jì)算機(jī)特征的大型企業(yè)管理信息系統(tǒng)時(shí),總要解決一個(gè)很重要的問題:如何在多個(gè)不同數(shù)據(jù)庫(kù)服務(wù)器之間保證共享數(shù)據(jù)的一致性。之所以有這個(gè)重要的問題在于企業(yè)組織在不同地點(diǎn)對(duì)具有相同結(jié)構(gòu)的本地?cái)?shù)據(jù)庫(kù)進(jìn)行修改,但要保證修改后的數(shù)據(jù)庫(kù)有相同的結(jié)果,其本質(zhì)就是在對(duì)本地?cái)?shù)據(jù)庫(kù)的修改體現(xiàn)在其他具有相同數(shù)據(jù)的遠(yuǎn)程數(shù)據(jù)庫(kù)中。那么如何解決這個(gè)問題就要用到數(shù)據(jù)庫(kù)的復(fù)制技術(shù)。

SQL SERVER提供了內(nèi)置的復(fù)制能力,復(fù)制組件并不是附加產(chǎn)品,而是核心引擎的一部分。在復(fù)制這個(gè)技術(shù)的支持下,用戶可以跨局域網(wǎng)、廣域網(wǎng)或因特網(wǎng)的不同數(shù)據(jù)服務(wù)器上維護(hù)數(shù)據(jù)的多個(gè)拷貝,從而保證數(shù)據(jù)的一致性。

復(fù)制模型;
SQL SERVER使用出版和訂閱這一術(shù)語(yǔ)來(lái)描述其復(fù)制活動(dòng),所謂出版,就是向其他數(shù)據(jù)庫(kù)服務(wù)器(訂閱者)復(fù)制數(shù)據(jù),訂閱就是從另外服務(wù)器(出版者)接收復(fù)制數(shù)據(jù)。雖然出版和訂閱的對(duì)象都是將數(shù)據(jù)復(fù)制,但出版和訂閱卻并不是不同角度的同一數(shù)據(jù)操作,而是體現(xiàn)出一定的層次性和順序性(總是先進(jìn)行出版,再進(jìn)行訂閱)。SQL SERVER的復(fù)制組件有出版物與論文。出版者、訂閱者、推訂閱和拉訂閱。

(1)出版物和論文

論文是被復(fù)制的數(shù)據(jù)集合,一篇論文一般就是咱們所說(shuō)的表,論文是出版物的基本組成單元。出版物是論文的集合。它可以包括一個(gè)或多個(gè)論文訂閱者,訂閱的是出版物而不是出版物中的論文,這樣可以使訂閱更為簡(jiǎn)單。

(2)出版者

出版者是出版出版物的服務(wù)器。出版者服務(wù)器來(lái)維護(hù)源數(shù)據(jù)庫(kù)以及有關(guān)出版物的信息。使數(shù)據(jù)可用于復(fù)制。除了決定哪些數(shù)據(jù)將被復(fù)制外,出版者要檢測(cè)哪些復(fù)制數(shù)據(jù)發(fā)生了變化,并將這些變化復(fù)制到分發(fā)者的分發(fā)數(shù)據(jù)庫(kù)中。

(3)分發(fā)者

分發(fā)者是指把從出版者傳遞來(lái)的復(fù)制數(shù)據(jù)或事務(wù)等送至相應(yīng)的訂閱者的服務(wù)器,并負(fù)責(zé)維護(hù)分發(fā)數(shù)據(jù)庫(kù)。

(4)訂閱者

訂閱者是指存儲(chǔ)復(fù)制數(shù)據(jù)的副本機(jī)器。且接收并維護(hù)已出版的數(shù)據(jù)的服務(wù)器,訂閱者也可以對(duì)出版數(shù)據(jù)進(jìn)行修改,盡管訂閱者可以對(duì)數(shù)據(jù)進(jìn)行修改,但它仍是一個(gè)訂閱者,當(dāng)然訂閱者也可以作為其他訂閱者的出版者。
出版者、分發(fā)者、訂閱者實(shí)際上并不一定指相互獨(dú)立的服務(wù)器。它只是對(duì)SQL SERVER在復(fù)制過(guò)程中所扮演的不同角色的描述。SQL SERVER允許一臺(tái)SQL SERVER服務(wù)器可以扮演不同的角色。比如一臺(tái)出版者的服務(wù)器既可出版出版物,也可以作為分發(fā)者來(lái)存儲(chǔ)和傳送快照復(fù)制和事務(wù)復(fù)制。在實(shí)際應(yīng)用中,用戶決定是否讓一臺(tái)服務(wù)器扮演一個(gè)或多個(gè)角色。在很大程序是基于對(duì)復(fù)制系統(tǒng)性能的考慮,例如,為了提高分發(fā)者從分發(fā)數(shù)據(jù)庫(kù)向訂閱者的數(shù)據(jù)庫(kù)復(fù)制出版物的效率,降低出版者服務(wù)器的負(fù)載,用戶常不允許一臺(tái)服務(wù)器既扮演出版者又扮演分發(fā)者。而是讓其他的服務(wù)器專站承擔(dān)分發(fā)者任務(wù),從而提高了出版者和分發(fā)者的性能。

(5)訂閱類型

推訂閱和拉訂閱
推訂閱是指由出版者將所有發(fā)生在出版數(shù)據(jù)庫(kù)的修改復(fù)制給訂閱者,而不必向訂閱者發(fā)出請(qǐng)求,只要出版數(shù)據(jù)庫(kù)發(fā)生修改,出版者就會(huì)自動(dòng)把這種修改體現(xiàn)在訂購(gòu)者那里,在對(duì)數(shù)據(jù)同步性要求比較高的場(chǎng)合,最好使用推訂閱,拉訂閱是指訂閱者在經(jīng)過(guò)一段時(shí)間就會(huì)向出版者要求復(fù)制出版數(shù)據(jù)庫(kù)發(fā)生的變化。
 
復(fù)制代理:

(1)快照代理

快照代理在分發(fā)者上創(chuàng)建并存儲(chǔ)快照文件,任務(wù)是:在分發(fā)數(shù)據(jù)庫(kù)中準(zhǔn)備已發(fā)布表的架構(gòu)和初始數(shù)據(jù)以及其他對(duì)象、存儲(chǔ)快照文件并記錄出版數(shù)據(jù)庫(kù)和訂閱服務(wù)器之間的同步信息,快照代理運(yùn)行在分發(fā)者服務(wù)器上,并與出版者相連接。每一個(gè)出版物都有自己的快照代理。與各種類型的復(fù)制一起使用。

(2)日志閱讀代理

日志讀取器代理與事務(wù)性復(fù)制一起使用。它將發(fā)布服務(wù)器上的事務(wù)日志中標(biāo)記為復(fù)制的事務(wù)移至分發(fā)數(shù)據(jù)庫(kù)中。使用事務(wù)性復(fù)制發(fā)布的每個(gè)數(shù)據(jù)庫(kù)都有自己的日志讀取器代理,該代理運(yùn)行于分發(fā)服務(wù)器上并與發(fā)布服務(wù)器連接(分發(fā)服務(wù)器與發(fā)布服務(wù)器可以是同一臺(tái)計(jì)算機(jī))。

(3)分發(fā)代理

分發(fā)代理與快照復(fù)制和事務(wù)性復(fù)制一起使用。它將初始快照應(yīng)用于訂閱服務(wù)器,并將分發(fā)數(shù)據(jù)庫(kù)中保存的事務(wù)移至訂閱服務(wù)器。分發(fā)代理既可以運(yùn)行于分發(fā)服務(wù)器(對(duì)于推送訂閱),也可運(yùn)行于訂閱服務(wù)器(對(duì)于請(qǐng)求訂閱)。

(4)合并代理:   

合并代理與合并復(fù)制一起使用。它將初始快照應(yīng)用于訂閱服務(wù)器,并移動(dòng)和協(xié)調(diào)所發(fā)生的增量數(shù)據(jù)更改。每個(gè)合并訂閱都有自己的合并代理,該代理同時(shí)連接到發(fā)布服務(wù)器和訂閱服務(wù)器并對(duì)它們進(jìn)行更新。合并代理既可以運(yùn)行于分發(fā)服務(wù)器(對(duì)于推送訂閱),也可以運(yùn)行于訂閱服務(wù)器(對(duì)于請(qǐng)求訂閱)。默認(rèn)情況下,合并代理將訂閱服務(wù)器上的更改上載到發(fā)布服務(wù)器,然后將發(fā)布服務(wù)器上的更改下載到訂閱服務(wù)器。

(5)隊(duì)列閱讀代理

隊(duì)列讀取器代理與包含排隊(duì)更新選項(xiàng)的事務(wù)性復(fù)制一起使用。該代理運(yùn)行于分發(fā)服務(wù)器,并將訂閱服務(wù)器上所做更改移回至發(fā)布服務(wù)器。與分發(fā)代理和合并代理不同,只有一個(gè)隊(duì)列讀取器代理的實(shí)例為給定分發(fā)數(shù)據(jù)庫(kù)的所有發(fā)布服務(wù)器和發(fā)布提供服務(wù)。
復(fù)制類型: SQL SEVER提供了三大類復(fù)制類型:快照復(fù)制、事務(wù)復(fù)制、合并復(fù)制??梢栽趯?shí)際應(yīng)用中使用相應(yīng)的復(fù)制類型,每一種復(fù)制類型都在不同程序上實(shí)現(xiàn)數(shù)據(jù)的一致性。

(1)快照復(fù)制

如其名字所言,快照復(fù)制指在某一時(shí)刻給出版數(shù)據(jù)庫(kù)中的出版數(shù)據(jù)照相,然后將數(shù)據(jù)復(fù)制到訂閱者服務(wù)器??煺諒?fù)制實(shí)現(xiàn)較為簡(jiǎn)單,其所復(fù)制的只是某一時(shí)刻數(shù)據(jù)庫(kù)的瞬間數(shù)據(jù),
快照復(fù)制是將整個(gè)出版物傳送給訂閱者,就是在某一時(shí)刻將出版數(shù)據(jù)進(jìn)行一次“照相”,生成一個(gè)描述出版數(shù)據(jù)庫(kù)中數(shù)據(jù)的當(dāng)前狀態(tài)的一個(gè)文件,然后在相應(yīng)的時(shí)間將其復(fù)制到訂閱都的數(shù)據(jù)庫(kù)上,快照復(fù)制并不是不停的監(jiān)視出版數(shù)據(jù)庫(kù)中發(fā)生的變化情況,它是對(duì)出版數(shù)據(jù)庫(kù)進(jìn)行一次掃描,把所有出版數(shù)據(jù)中的數(shù)據(jù)從源數(shù)據(jù)庫(kù)送至目標(biāo)數(shù)據(jù)庫(kù),而不僅僅是變化的數(shù)據(jù)。如果數(shù)據(jù)量很大,那么要復(fù)制的數(shù)據(jù)就很多。因此對(duì)網(wǎng)絡(luò)資源要求很高,不僅要有較快的傳輸速度,而且要保證傳輸?shù)目煽啃浴?br /> 快照復(fù)制是最為簡(jiǎn)單的一種復(fù)制類型,能夠在出版者和訂閱者之間保證數(shù)據(jù)的一致性。快照復(fù)制通常使用在以下場(chǎng)合:
在一定時(shí)間內(nèi)出現(xiàn)大量的更改的操作,但數(shù)據(jù)總量不大,變化周期較長(zhǎng)。

(2)事務(wù)復(fù)制

快照復(fù)制是將整個(gè)數(shù)據(jù)集發(fā)送給訂閱服務(wù)器,由于體積大而造成復(fù)制周期較長(zhǎng),會(huì)形成復(fù)制滯后問題。那么事務(wù)復(fù)制使用事務(wù)日志來(lái)生成將復(fù)制到訂閱服務(wù)器的事務(wù),因?yàn)樗粡?fù)制事務(wù)也就是變化,所以滯后也比快照復(fù)制低得多,因?yàn)閷⒉粩嗟卦谟嗛喎?wù)器處得到及時(shí)應(yīng)用。

事務(wù)復(fù)制有三個(gè)組件:

快照代理,它生成架構(gòu),數(shù)據(jù)以及跟蹤復(fù)制過(guò)程所需的數(shù)據(jù);
分發(fā)代理:它分發(fā)快照和隨后的命令;
日志讀取器代理:它讀取發(fā)布數(shù)據(jù)的事務(wù)日志。
在事務(wù)復(fù)制中,當(dāng)出版數(shù)據(jù)庫(kù)發(fā)生變化時(shí),這種變化就會(huì)立即傳遞給訂閱者。并在較短時(shí)間內(nèi)完成(幾秒),而不是像快照復(fù)制那樣要經(jīng)過(guò)很長(zhǎng)一段時(shí)間間隔。因此,事務(wù)復(fù)制是一種接近實(shí)時(shí)地從源到目標(biāo)分發(fā)數(shù)據(jù)的方法。由于某種原因事務(wù)復(fù)制的頻率較高。所以必須保證在訂閱者與出版者之間要有可靠的網(wǎng)絡(luò)連接。

(3)合并復(fù)制

合并復(fù)制是為移動(dòng)用戶設(shè)計(jì)的,可以在發(fā)布服務(wù)器或是訂閱服務(wù)器處執(zhí)行修改,在合并代理運(yùn)行時(shí),這些修改將同步,多用于發(fā)布服務(wù)器與訂閱服務(wù)都修改數(shù)據(jù)的情況下。工作原理如下:在要復(fù)制的每個(gè)表上實(shí)現(xiàn)觸發(fā)器,并使用包含GUID列唯一標(biāo)識(shí)要復(fù)制的表中的每一行。對(duì)其中的任何一個(gè)表進(jìn)行修改時(shí),都會(huì)將更改將記錄一個(gè)數(shù)據(jù)表中,在合并代理運(yùn)行時(shí),它收集數(shù)據(jù)表中的GUID,這些GUID指出了在發(fā)布服務(wù)器和訂閱服務(wù)器處修改過(guò)的行。對(duì)于只在發(fā)布服務(wù)器或是訂閱端修改的數(shù)據(jù)則直接進(jìn)行相應(yīng)操作,如INSERT,UPDATE,DELETE,如果雙方都有GUID則按照用戶指定的方式解決沖突,默認(rèn)發(fā)布服務(wù)器伏先。

配置復(fù)制:無(wú)論是快照復(fù)制,事務(wù)性復(fù)制還是合并復(fù)制,創(chuàng)建復(fù)制都要經(jīng)過(guò)以下幾個(gè)步驟:

1.    創(chuàng)建發(fā)布服務(wù)器。選擇要發(fā)布的服務(wù)器。如果有條件的,也可以分發(fā)服務(wù)器,在這里我們就將發(fā)布服務(wù)器和分發(fā)服務(wù)器設(shè)置在同一臺(tái)計(jì)算機(jī)上。
2.    不論是發(fā)布服務(wù)器還是訂閱服務(wù)器必須開啟代理服務(wù)。
3.    創(chuàng)建一個(gè)發(fā)布。即將需要的數(shù)據(jù)庫(kù)及對(duì)象發(fā)布出來(lái)。
4.    選擇一個(gè)適合自己的發(fā)布類型。
5.    設(shè)置復(fù)制代理及安全,即指定可以運(yùn)行代理的用戶帳號(hào)。

創(chuàng)建可以使用此發(fā)布的訂閱服務(wù)器。
現(xiàn)在我們的實(shí)驗(yàn)基于下圖:

我們將SERVER1上的DB1數(shù)據(jù)庫(kù)復(fù)制到SERVE2服務(wù)器上
具體操作如下 :
SERVER1上操作:實(shí)例名----復(fù)制----本地發(fā)布-----新建發(fā)布

我們?cè)谶@里選擇將發(fā)布服務(wù)器本身作為自己的的分發(fā)服務(wù)器。下面指定一個(gè)快照文件夾,用于存放快照信息,并依次選擇發(fā)布數(shù)據(jù)庫(kù)DB1

接下來(lái)指定復(fù)制類型;我們先進(jìn)行快照復(fù)制

幾種發(fā)布類型前面已做講解,具有可更新訂閱的事務(wù)發(fā)布屬于事務(wù)發(fā)布的一種。

在該對(duì)話框里可以指定用于在分發(fā)服務(wù)器上運(yùn)行快照代理的WINDOWS用戶。WINDOWS用戶又稱為進(jìn)程帳戶,因?yàn)榇磉M(jìn)程是在該帳戶下運(yùn)行的。

此時(shí)發(fā)布成功完成,如果要修改發(fā)布屬性,可以在復(fù)制-----本地發(fā)布----看到該發(fā)布

下面就可以進(jìn)行訂閱了,訂閱可以在發(fā)布服務(wù)器上進(jìn)行,也可以在訂閱服務(wù)器上進(jìn)行。

在訂閱服務(wù)器上訂閱:

SERVER2上操作:實(shí)例名-----復(fù)制--本地訂閱----新建訂閱
在發(fā)布服務(wù)器上訂閱:實(shí)例名-----復(fù)制--本地發(fā)布------右擊屬性---選擇新建訂閱

接下來(lái)的操作雙方是一樣的:

選擇發(fā)布服務(wù)器,然后指定復(fù)制類型:我們選擇是推復(fù)制 并且給SERVER2選擇數(shù)據(jù)庫(kù)

彈出如圖所示的分發(fā)代理安全性對(duì)話框。在該對(duì)話框里可以設(shè)置同步訂閱時(shí)運(yùn)行分發(fā)代理進(jìn)程的帳號(hào):

對(duì)于推送訂閱來(lái)說(shuō),分發(fā)代理在分發(fā)服務(wù)器上運(yùn)行。對(duì)于請(qǐng)求訂閱來(lái)說(shuō),分發(fā)代理在訂閱服務(wù)器上運(yùn)行。在本例使用的是推送訂閱,因此應(yīng)該使用發(fā)布服務(wù)器的用戶
連接到分發(fā)服務(wù)器:對(duì)于推送訂閱來(lái)說(shuō),只能通過(guò)模擬進(jìn)程帳戶來(lái)與分發(fā)服務(wù)器連接。
對(duì)于請(qǐng)求訂閱來(lái)說(shuō),可以使用模擬帳戶或是SQL SERVER用戶來(lái)連接。
連接到訂閱服務(wù)器:對(duì)于推送訂閱來(lái)說(shuō),可以通過(guò)模擬進(jìn)程或是SQL SERVER用戶來(lái)連接。
對(duì)于請(qǐng)求訂閱來(lái)說(shuō),只能使用模擬帳戶來(lái)連接。

測(cè)試:
此時(shí)我們就可以看到發(fā)布服務(wù)器中的YG表已經(jīng)復(fù)制到了訂閱服務(wù)器中。
我們?cè)赟ERVER1的DB1數(shù)據(jù)庫(kù)中的YG表中插入一條記錄,杜飛 男 29

至于事務(wù)復(fù)制和合并復(fù)制,過(guò)程大致相同只是要注意表的主鍵和GUID問題,在此不再累述,如有疑問或不同意見請(qǐng)批評(píng)指定

杜飛
2008-06-30

常見錯(cuò)誤;

1.代理服務(wù)一定要事先運(yùn)行

2.如果是GHOST的系統(tǒng),會(huì)發(fā)生計(jì)算機(jī)名和SQL SERVER中所能識(shí)別的服務(wù)器名稱不一致的情況,則請(qǐng)使用以下的代碼進(jìn)行同步更新,

if serverproperty('servername') <> @@servername 
begin 
declare @server sysname 
set @server = @@servername 
exec sp_dropserver @server = @server 
set @server = cast(serverproperty('servername') as sysname) 
exec sp_addserver @server = @server , @local = 'LOCAL' 
end 

再重新啟動(dòng)SQL SERVER 核心服務(wù)和代理服務(wù)

本文出自 “杜飛” 博客

相關(guān)文章

最新評(píng)論