前陣子搞了下資料庫同步,大概意思就是伺服器上有一個資料庫,與本地資料庫進行同步,伺服器上的資料庫有什麼改變,可以同步到本地資料庫中。做之前百度了下,流程分以下三步, 第一步: 伺服器上的資料庫進行發佈 第二步: 本地資料庫進行訂閱 第三步: 把冰箱門關上 看起來很簡單,實際上遠不是這麼一回事,把哥都
前陣子搞了下資料庫同步,大概意思就是伺服器上有一個資料庫,與本地資料庫進行同步,伺服器上的資料庫有什麼改變,可以同步到本地資料庫中。做之前百度了下,流程分以下三步,
第一步: 伺服器上的資料庫進行發佈
第二步: 本地資料庫進行訂閱
第三步: 把冰箱門關上
看起來很簡單,實際上遠不是這麼一回事,把哥都弄得上火了。
首先第一天,開始弄了,結果打開sql server 2008一看,死活沒找到發佈和訂閱功能,複製一項裡面空空如也,弔毛沒有。看來是沒裝完整,沒辦法,只能卸了重裝,卸過sql的都知道sql有多難卸,還要清除註冊表什麼的,搞了半天沒搞好,一氣之下,重裝系統。
搞了半天終於裝好了,首先在伺服器端對指定資料庫進行發佈,具體步驟就不講了,網上多得是,註意的是選擇發佈方式時要選擇事務發佈,這種發佈方式可以實現數據的及時更新,比如說伺服器端數據有更改時,會及時同步到本地端資料庫,而快照發佈並不能實現這一功能,因為這種發佈方式原理是將資料庫轉成快照,然後發佈的是快照,適用於數據穩定,幾乎不會更改的情況下,若是要同步更改過的數據,那就得重新生成快照了。所以一般選擇事務發步,其他不會有啥問題。
發佈成功後,本地端即可進行訂閱了,新建訂閱的時候,若出現以下提示
這時候首先在sql中執行 select @@servername ,將得到的結果與電腦名稱進行比較,你會發現兩者是不一樣的。呵呵,一樣就見鬼了。出現這種情況一般是改過電腦名稱,
接下來執行以下語句:
sp_dropserver 'old_server_name' // old_server_name就是上面執行select @@servername的 結果
go sp_addserver 'current_computer_name','local' //current_computer_name就是當前PC名稱
修改完後,重啟SQL SERVER服務。之後按照網上流程一步一步訂閱即可,訂閱成功後,可以測試一下 ,在伺服器端改個數據,然後看下本地啊有同步,一看,果然沒同步!!!繼續找原因吧....
登錄伺服器端 ,查看訂閱狀態,顯示錯誤:進程無法連接到 subscriber xxx-xxxxxx;網上百度了一大堆答案,有一個給了我提示。電腦名稱中不能有特殊字元,比如 ’/’ , ’-’之類的,OK,修改電腦名稱後,重新來一遍,大功告成!!!!!!!!!!