sql server2005中對於增、刪、改和查詢是有某些沖突的,很容易造成死鎖。為了解決這個問題,我們可以使用同步來解決這個問題,將這台數據庫分開,我們建立兩個FileDetail表,一個用來給增、刪、改的程序使用,另一個給查詢的程序來調用,這樣就可以解決以上的難題。
在SQL Server2005中,同步數據需要:發布服務器、分發服務器和訂閱服務器,源數據所在的服務器是發布服務器,負責發表數據。發布服務器把要復制的數據或對象發生的改變復制到分發服務器,分發服務器用來接收數據的所有改變,它包含一個分發數據庫,並保存這些改變,再把這些改變分發給訂閱服務器。在復制過程中,發布服務器是一種數據庫實例,它通過復制向其他位置提供數據,分發服務器也是一種數據庫實例,它起著存儲區的作用。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器可以從多個發布服務器上接收數據。
下面的例子因為我現在沒有那麼多資源,只用了本機做測試,我還測試了兩台之間的操作,大家有興趣的可以弄多台來試試。
現在我們來通過SQL Server2005來實現數據同步:
首先我們開啟SQL Server代理(默認是禁用的)
正在啟動——》啟動成功
現在我們來復制下數據庫。
點擊siccdb右鍵-任務-復制數據庫,出現以下界面
下一步
這裡使用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來保持和它同步。
選擇數據庫同級目錄下的復制-本地發布-新建發布,啟動發布向導。
關鍵詞:數據 同步