本文出自個人我的網站【思考者日記】,轉載請務必保留此出處。html
SQL Server2005中對於增、刪、改和查詢是有某些衝突的,很容易形成死鎖。如今有臺數據庫裏的FileDetail表是由兩套程序來操做的,一套程序負責增、刪、改,另外一套程序負責查詢,結果當數據量大的時候,很容易形成查詢的那套程序查詢數據很慢,甚至形成死鎖的狀況。緣由是SQL Server2005裏的設計機制是插入的時候,死鎖的記錄只會是某一條,並不影響下一條和上一條,可是糾結的狀況來了,你插入的時候是爽了,並不影響你,但是當我查詢的時候,若是發現某一條記錄被死鎖,那麼我這條T-SQL查詢的結果就是所有死鎖,查詢不出任何東西。數據庫
爲了解決這個問題,咱們可使用同步來解決這個問題,將這臺數據庫分開,咱們創建兩個FileDetail表,一個用來給增、刪、改的程序使用,另外一個給查詢的程序來調用,這樣就能夠解決以上的難題。安全
在SQL Server2005中,同步數據須要:發佈服務器、分發服務器和訂閱服務器,源數據所在的服務器是發佈服務器,負責發表數據。發佈服務器把要複製的數據或對象發生的改變複製到分發服務器,分發服務器用來接收數據的全部改變,它包含一個分發數據庫,並保存這些改變,再把這些改變分發給訂閱服務器。在複製過程當中,發佈服務器是一種數據庫實例,它經過複製向其餘位置提供數據,分發服務器也是一種數據庫實例,它起着存儲區的做用。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器能夠從多個發佈服務器上接收數據。服務器
下面的例子由於我如今沒有那麼多資源,只用了本機作測試,我還測試了兩臺之間的操做,你們有興趣的能夠弄多臺來試試。ide
如今咱們來經過SQL Server2005來實現數據同步:測試
首先咱們開啓SQL Server代理(默認是禁用的)網站
正在啓動——》啓動成功設計
如今咱們來複制下數據庫。代理
點擊siccdb右鍵-任務-複製數據庫,出現如下界面htm
下一步
這裏使用SQL Server身份驗證,通常建議你們都用這種方式,安全,不會出錯。填好以後,下一步。
這裏的目標服務器也使用SQL Server身份驗證。若是你想使用同一網段下別的計算機的數據庫,那麼這裏的目標服務器能夠選擇你的遠程計算機,注意:遠程計算機鏈接不支持IP和別名,必須使用DoMain登陸名(即域計算機登陸名)。這裏說下我在測試兩臺計算機同步碰到的問題,我發現登陸不了了?
緣由
你的計算機改過計算機名
可使用
SELECT * FROM Sys.SysServers來查詢下數據庫裏的源服務器名
我這裏是WILCOM-DEV_SQLS
咱們ping下服務器的IP地址,遠程登陸不上的能夠在C:WINDOWSsystem32driversetc下的hosts文件裏配置下
下一步:
這裏你們能夠根據實際狀況來選擇,默認是第一種,我這裏選擇第二種,由於個人源數據庫是不能斷開的(斷開了就要出大事了,呵呵,開個玩笑)好了,廢話很少說,選中後點下一步:
這裏默認會勾選你要發佈的數據庫,狀態必須是已存在於目標上才能夠發佈。好了,我這裏沒有問題,下一步:
這裏是目標數據庫,我給改了下目標數據庫的名字爲siccdb_bak
下面選擇若是目標數據庫已存在的狀況,我選擇第一種,下一步。
這裏你們能夠不要動,保持默認就好。直接下一步
我這裏就不選擇計劃了,你們能夠本身試試看計劃的執行狀態。
若是你發現下面的integration Services代理帳號不讓選,是灰色的禁止狀態,那建議你看下你的SQL Server服務有沒有安裝這個,若是沒有,那悲催了,你就從新運行SQL Server的安裝嚮導從新安裝下這個服務吧。(下圖的這個服務)
緊接着,下一步
這裏就能夠完成啦。
OK,複製完畢。
刷新下數據庫,咱們會發現多了一個siccdb_bak
如今,咱們來進行發佈這個siccdb數據庫,讓siccdb_bak來保持和它同步。
選擇數據庫同級目錄下的複製-本地發佈-新建發佈,啓動發佈嚮導。
下一步:
默認第一個,下一步。
這裏是存放快照文件的目錄,你們默認便可, 免的後面找不到。下一步:
這裏咱們選擇須要發佈的數據庫,下一步:
這裏咱們選擇快照發布,其餘的選項你們能夠對照上圖中的說明來本身嘗試,相信你們都很聰明滴。下一步:
這裏咱們展開表,能夠發現這個庫下的全部表,咱們能夠根據狀況來勾選,好了,下一步:
這裏咱們還能夠對選中的表添加SQL語句來篩選,由於我這裏用不到,就不給你們作演示了,節約時間,趕忙寫教程。下一步:
這裏咱們須要勾選當即和計劃,勾選計劃後,咱們選擇更改
我這裏須要實時同步,因此我選擇了天天每分鐘來進行同步,你們能夠根據實際狀況來選擇,好了,肯定。
好了,如今來檢查下是不是你選擇的計劃,下一步:
這裏選擇安全設置,
上面的信息我在前面已經說過了,若是不知道的,能夠參考我前面的說明。填好後,肯定。
下一步:
當即發佈,下一步:
這裏填好發佈名稱,完成。
OK,一切正常,咱們關閉。
本地發佈下多了一個[siccdb]:TOB就是咱們剛建立的發佈,如今咱們須要來訂閱它,右鍵本地訂閱-新建訂閱:
打開訂閱嚮導,下一步:
這裏找到了咱們的發佈源,下一步:
這裏選擇[推送訂閱],簡單點,不耽誤時間了,下一步:
這裏咱們選擇好訂閱服務器和訂閱數據庫,下一步:
這裏咱們選好與分發服務器、與訂閱服務器的鏈接:
填好後,肯定。
選擇連續運行,下一步:
選擇連續運行,下一步:
建立訂閱,下一步:
好了,這裏就完成了。
如今咱們在siccdb中增、刪、改些數據,咱們在一分鐘後會發現,siccdb_bak中也同步更新了這些數據。
本文出自個人我的網站【思考者日記】,轉載請務必保留此出處。