SQL Server2005中對於增、刪、改和查詢是有某些沖突的,很容易造成死鎖。現在有台數據庫裡的FileDetail表是由兩套程序來操作的,一套程序負責增、刪、改,另一套程序負責查詢,結果當數據量大的時候,很容易造成查詢的那套程序查詢數據很慢,甚至造成死鎖的情況。原因是SQL Server2005裡的設計機制是插入的時候,死鎖的記錄只會是某一條,並不影響下一條和上一條,但是糾結的情況來了,你插入的時候是爽了,並不影響你,可是當我查詢的時候,如果發現某一條記錄被死鎖,那麼我這條T-SQL查詢的結果就是全部死鎖,查詢不出任何東西。
為了解決這個問題,我們可以使用同步來解決這個問題,將這台數據庫分開,我們建立兩個FileDetail表,一個用來給增、刪、改的程序使用,另一個給查詢的程序來調用,這樣就可以解決以上的難題。
在SQL Server2005中,同步數據需要:發布服務器、分發服務器和訂閱服務器,源數據所在的服務器是發布服務器,負責發表數據。發布服務器把要復制的數據或對象發生的改變復制到分發服務器,分發服務器用來接收數據的所有改變,它包含一個分發數據庫,並保存這些改變,再把這些改變分發給訂閱服務器。在復制過程中,發布服務器是一種數據庫實例,它通過復制向其他位置提供數據,分發服務器也是一種數據庫實例,它起著存儲區的作用。訂閱服務器是接收復制數據的數據庫實例。一個訂閱服務器可以從多個發布服務器上接收數據。
下面的例子因為我現在沒有那麼多資源,只用了本機做測試,我還測試了兩台之間的操作,大家有興趣的可以弄多台來試試。
現在我們來通過SQL Server2005來實現數據同步:
首先我們開啟SQL Server代理(默認是禁用的)
正在啟動——》啟動成功
現在我們來復制下數據庫。
點擊siccdb右鍵-任務-復制數據庫,出現以下界面