在sql server 2005中,使用複製,可以在區域網和廣域網上將資料分發到不同位置,可以確保分布在不同地點的資料自動同步更新,從而保證資料的一致性。
現在假如有乙個這樣的應用,有乙個遊戲服務商在推廣乙個大型遊戲的時候,現在架設了多台資料庫伺服器,為了資料的便於統計,最終這些資料可以自動的轉入到指定儲存的另一台伺服器中,這時候就會面臨著乙個這樣的問題,如何保證這些多台資料庫之間的資料的同步呢?
我們就可以使用複製的辦法,複製是將一組資料或資料庫物件從乙個資料庫複製和分發到另外乙個資料庫,從而使不同的伺服器使用者都可以在許可權的許可的範圍內共享這份資料。使用複製,可以在區域網和廣域網上將資料分發到不同位置,可以確保分布在不同地點的資料自動同步更新,從而保證資料的一致性。
在sql server 2005中,複製主要需要有發布伺服器、分發伺服器和訂閱伺服器,源資料所在的伺服器是發布伺服器,負責發表資料。發布伺服器把要複製的資料或物件發生的改變複製到分發伺服器,分發伺服器用來接收資料的所有改變,它包含乙個分發資料庫,並儲存這些改變,再把這些改變分發給訂閱伺服器。在複製過程中,發布伺服器是一種資料庫例項,它通過複製向其他位置提供資料,分發伺服器也是一種資料庫例項,它起著儲存區的作用。訂閱伺服器是接收複製資料的資料庫例項。乙個訂閱伺服器可以從多個發布伺服器上接收資料。
複製主要有三種形式:快照複製、事務複製、合併複製。快照複製將資料以特定時刻的瞬時狀態分發,而不監視對資料的更新。如果發生了同步,就會生成完整的快照並將其傳送到訂閱伺服器;事務性複製通常從發布資料庫物件和資料的快照開始。拍攝初始快照後,隨後在發布伺服器中所做的資料更改和架構修改通常在修改發生時便傳遞給訂閱伺服器。資料更改在訂閱伺服器中應用的更改順序以及更改所處的事務邊界與在發布伺服器中相同。合併複製通常也是從發布資料庫物件和資料的報表快照開始。並用觸發器跟蹤在發布伺服器和訂閱伺服器中所做的後續資料更改和架構修改。訂閱伺服器與發布伺服器在連線到網路時進行同步,並交換自上次同步以來發布伺服器和訂閱伺服器間發生變化的所有行。
現在來通過sql server 2005來建立資料複製的操作 。
1、先在兩台伺服器上建立兩個完全一樣的資料庫、表結構及存放的資料;
2、在伺服器一上開啟sql server 2005,然後選擇「複製」——>「本地發布」,然後右鍵選擇新建發布;
3、在新建發布嚮導中首先要求選擇分發伺服器,在操作中我們暫選擇本機作為分發伺服器,所以選擇預設值。
4、選擇快照的路徑,一般情況下選擇預設路徑,根據嚮導選擇要發布的資料庫;
5、選擇發布的內容,可以選擇發布表,也可以發布其他的資料庫物件,比如函式。在選擇某乙個表之後還可以選擇對應的列;
6、發布的內容設定好後,然後執行sql**的賬號。然後再按照嚮導給建立的複製名命。這樣就建立好了發布和分發的應用了。
下面接著來配置訂閱的應用。
1、先在伺服器二上開啟sql server 2005,然後選擇「複製」——>「本地訂閱」,然後右鍵選擇新建訂閱;
2、選擇發布伺服器,在發布伺服器的下接列表中找到對應已經建立好的sql server 發布伺服器,然後就可以看到剛才新建的發布複製名稱;
3、選擇訂閱方式。在這裡可以選擇請求訂閱,然後選擇訂閱的本地需要同步的資料庫;
4、設定完本地資料庫之後要求設定執行**的安全性,設定成sql **賬號。訂閱的設定就已經完成。
下面我們就可以做乙個操作的示範,在伺服器一上面新插入一條記錄後,然後再去伺服器二上面看看對應表的資料,會發現到,也會看到更新後的資料。
如何設定遠端訪問SQL Server2005
sql server2005不能進行遠端連線問題困擾了我好幾天,今天終於把這個問題給解決了!再這個過程中在網上我查詢了很多資料,發現有很多方法都不能很好的解決問題,我將其整理如下 首先檢視埠,看有沒1433 sql server的預設埠 1 執行 cmd netstat ano 看是否有 tcp 0...
如何設定遠端訪問SQL Server2005
sql server2005 不能進行遠端連線問題困擾了我好幾天,今天終於把這個問題給解決了!再這個過程中在網上我查詢了很多資料,發現有很多方法都不能很好的解決問題,我將其整理如下 首先檢視埠,看有沒 1433 sql server 的預設埠 1 執行 cmd netstat ano 看是否有 tc...
如何設定遠端訪問SQL Server2005
sql server2005不能進行遠端連線問題困擾了我好幾天,今天終於把這個問題給解決了!再這個過程中在網上我查詢了很多資料,發現有很多方法都不能很好的解決問題,我將其整理如下 首先檢視埠,看有沒1433 sql server的預設埠 1 執行 cmd netstat ano 看是否有 tcp 0...