SQL Server2005數據同步


本文出自我的個人網站【思考者日記】,轉載請務必保留此出處。

 SQL Server2005中對於增、刪、改和查詢是有某些沖突的,很容易造成死鎖。現在有台數據庫里的FileDetail表是由兩套程序來操作的,一套程序負責增、刪、改,另一套程序負責查詢,結果當數據量大的時候,很容易造成查詢的那套程序查詢數據很慢,甚至造成死鎖的情況。原因是SQL Server2005里的設計機制是插入的時候,死鎖的記錄只會是某一條,並不影響下一條和上一條,但是糾結的情況來了,你插入的時候是爽了,並不影響你,可是當我查詢的時候,如果發現某一條記錄被死鎖,那么我這條T-SQL查詢的結果就是全部死鎖,查詢不出任何東西。

為了解決這個問題,我們可以使用同步來解決這個問題,將這台數據庫分開,我們建立兩個FileDetail表,一個用來給增、刪、改的程序使用,另一個給查詢的程序來調用,這樣就可以解決以上的難題。

在SQL Server2005中,同步數據需要:發布服務器、分發服務器和訂閱服務器,源數據所在的服務器是發布服務器,負責發表數據。發布服務器把要復制的數據或對象發生的改變復制到分發服務器,分發服務器用來接收數據的所有改變,它包含一個分發數據庫,並保存這些改變,再把這些改變分發給訂閱服務器。在復制過程中,發布服務器是一種數據庫實例,它通過復制向其他位置提供數據,分發服務器也是一種數據庫實例,它起着存儲區的作用。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器可以從多個發布服務器上接收數據。

下面的例子因為我現在沒有那么多資源,只用了本機做測試,我還測試了兩台之間的操作,大家有興趣的可以弄多台來試試。

現在我們來通過SQL Server2005來實現數據同步:

QQ截圖20130405171334.jpg

 

首先我們開啟SQL Server代理(默認是禁用的)

002.jpg

 

正在啟動——》啟動成功

 

現在我們來復制下數據庫。

點擊siccdb右鍵-任務-復制數據庫,出現以下界面

0036.jpg

 

下一步

004.jpg

 

這里使用SQL Server身份驗證,一般建議大家都用這種方式,安全,不會出錯。填好之后,下一步。

006.jpg

 

這里的目標服務器也使用SQL Server身份驗證。如果你想使用同一網段下別的計算機的數據庫,那么這里的目標服務器可以選擇你的遠程計算機,注意:遠程計算機連接不支持IP和別名,必須使用DoMain登錄名(即域計算機登錄名)。這里說下我在測試兩台計算機同步碰到的問題,我發現登錄不了了?

原因

你的計算機改過計算機名

可以使用

SELECT * FROM Sys.SysServers來查詢下數據庫里的源服務器名

007.jpg

 

我這里是WILCOM-DEV_SQLS

我們ping下服務器的IP地址,遠程登錄不上的可以在C:WINDOWSsystem32driversetc下的hosts文件里配置下

008.jpg

 

下一步:

010.jpg

 

這里大家可以根據實際情況來選擇,默認是第一種,我這里選擇第二種,因為我的源數據庫是不能斷開的(斷開了就要出大事了,呵呵,開個玩笑)好了,廢話不多說,選中后點下一步:

011.jpg

 

這里默認會勾選你要發布的數據庫,狀態必須是已存在於目標上才可以發布。好了,我這里沒有問題,下一步:

012.jpg

 

這里是目標數據庫,我給改了下目標數據庫的名字為siccdb_bak

下面選擇如果目標數據庫已存在的情況,我選擇第一種,下一步。

013.jpg

這里大家可以不要動,保持默認就好。直接下一步

014.jpg

 

我這里就不選擇計划了,大家可以自己試試看計划的執行狀態。

如果你發現下面的integration Services代理賬號不讓選,是灰色的禁止狀態,那建議你看下你的SQL Server服務有沒有安裝這個,如果沒有,那悲催了,你就重新運行SQL Server的安裝向導重新安裝下這個服務吧。(下圖的這個服務)

015.jpg

 

緊接着,下一步

016.jpg

 

這里就可以完成啦。

017.jpg

 

OK,復制完畢。

刷新下數據庫,我們會發現多了一個siccdb_bak

現在,我們來進行發布這個siccdb數據庫,讓siccdb_bak來保持和它同步。

018.jpg

選擇數據庫同級目錄下的復制-本地發布-新建發布,啟動發布向導。

019.jpg

 

下一步:

020.jpg

 

默認第一個,下一步。

021.jpg

 

這里是存放快照文件的目錄,大家默認即可, 免的后面找不到。下一步:

022.jpg

 

這里我們選擇需要發布的數據庫,下一步:

023.jpg

 

這里我們選擇快照發布,其他的選項大家可以對照上圖中的說明來自己嘗試,相信大家都很聰明滴。下一步:

024.jpg

 

這里我們展開表,可以發現這個庫下的所有表,我們可以根據情況來勾選,好了,下一步:

025.jpg

 

這里我們還可以對選中的表添加SQL語句來篩選,因為我這里用不到,就不給大家做演示了,節約時間,趕緊寫教程。下一步:

026.jpg

這里我們需要勾選立即和計划,勾選計划后,我們選擇更改

027.jpg

 

我這里需要實時同步,所以我選擇了每天每分鍾來進行同步,大家可以根據實際情況來選擇,好了,確定。

028.jpg

好了,現在來檢查下是否是你選擇的計划,下一步:

029.jpg

 

這里選擇安全設置,

030.jpg

 

上面的信息我在前面已經說過了,如果不知道的,可以參考我前面的說明。填好后,確定。

031.jpg

 

下一步:

032.jpg

 

立即發布,下一步:

033.jpg

 

這里填好發布名稱,完成。

034.jpg

 

OK,一切正常,我們關閉。

035.jpg

 

本地發布下多了一個[siccdb]:TOB就是我們剛創建的發布,現在我們需要來訂閱它,右鍵本地訂閱-新建訂閱:

037.jpg

 

打開訂閱向導,下一步:

038.jpg

 

這里找到了我們的發布源,下一步:

039.jpg

 

這里選擇[推送訂閱],簡單點,不耽誤時間了,下一步:

040.jpg

這里我們選擇好訂閱服務器和訂閱數據庫,下一步:

041.jpg

 

這里我們選好與分發服務器、與訂閱服務器的連接:

[CropImg]042.jpg

 

填好后,確定。

043.jpg

 

選擇連續運行,下一步:

044.jpg

 

選擇連續運行,下一步:

045.jpg

 

創建訂閱,下一步:

046.jpg

 

好了,這里就完成了。

047.jpg

 

現在我們在siccdb中增、刪、改些數據,我們在一分鍾后會發現,siccdb_bak中也同步更新了這些數據。

 

本文出自我的個人網站【思考者日記】,轉載請務必保留此出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM