SQL Server2005數據同步

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

 SQL Server2005中對於增、刪、改和查詢是有某些衝突的,很容易形成死鎖。如今有臺數據庫裏的FileDetail表是由兩套程序來操做的,一套程序負責增、刪、改,另外一套程序負責查詢,結果當數據量大的時候,很容易形成查詢的那套程序查詢數據很慢,甚至形成死鎖的狀況。緣由是SQL Server2005裏的設計機制是插入的時候,死鎖的記錄只會是某一條,並不影響下一條和上一條,可是糾結的狀況來了,你插入的時候是爽了,並不影響你,但是當我查詢的時候,若是發現某一條記錄被死鎖,那麼我這條T-SQL查詢的結果就是所有死鎖,查詢不出任何東西。數據庫

爲了解決這個問題,咱們可使用同步來解決這個問題,將這臺數據庫分開,咱們創建兩個FileDetail表,一個用來給增、刪、改的程序使用,另外一個給查詢的程序來調用,這樣就能夠解決以上的難題。安全

在SQL Server2005中,同步數據須要:發佈服務器、分發服務器和訂閱服務器,源數據所在的服務器是發佈服務器,負責發表數據。發佈服務器把要複製的數據或對象發生的改變複製到分發服務器,分發服務器用來接收數據的全部改變,它包含一個分發數據庫,並保存這些改變,再把這些改變分發給訂閱服務器。在複製過程當中,發佈服務器是一種數據庫實例,它經過複製向其餘位置提供數據,分發服務器也是一種數據庫實例,它起着存儲區的做用。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器能夠從多個發佈服務器上接收數據。服務器

下面的例子由於我如今沒有那麼多資源,只用了本機作測試,我還測試了兩臺之間的操做,你們有興趣的能夠弄多臺來試試。ide

如今咱們來經過SQL Server2005來實現數據同步:測試

QQ截圖20130405171334.jpg

 

首先咱們開啓SQL Server代理(默認是禁用的)網站

002.jpg

 

正在啓動——》啓動成功設計

 

如今咱們來複制下數據庫。代理

點擊siccdb右鍵-任務-複製數據庫,出現如下界面htm

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中也同步更新了這些數據。

 

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

相關文章
相關標籤/搜索