SQLSERVER2008釋出訂閱(踩坑)增量同步資料

germany006發表於2019-09-18

前言

在網上查了N多資料,居然沒有詳細寫如何配置增量同步的,我在自己配置的時候就遇到一些誤區和麻煩,現在自己總結一下,留著以後遇到用的時候可以檢視


一、環境準備


釋出伺服器:

192.168.56.11

作業系統版本WINDOWS2008

資料庫版本SQLSERVER 2008R2

訂閱伺服器:

192.168.56.12

作業系統版本WINDOWS2012

資料庫版本SQLSERVER 2016 SP2


二、釋出伺服器配置

1、建立快照存放資料夾,並設定為共享

一般情況下,C盤為作業系統盤,不考慮作為快照存放位置

D盤為資料庫存放碟符,同樣不考慮

E盤為備份盤,可考慮


我這裡的E盤作為資料庫的備份檔案存放碟符

所以建立了一個資料夾BI_COPY,並設定為everyone 讀寫許可權共享。

這裡過程過於簡單就不截圖了

快照路徑就是E:\BI_COPY

快照實際是存放著你要同步的表的一個快照,如果資料量很大,這個資料夾也會很大

這是我的理解,別人都不敢說,哈哈


2、建立分發資料庫檔案存放資料夾

路徑E:\BI_COPY_TEMP_DB

因為我們將要配置的是事務日誌的釋出訂閱的同步方式,所以分發資料庫distribution實際上相當於存放著事務日誌

這是我的理解 ,別人都不敢說,哈哈


3、在釋出伺服器上開啟SQLSERVER控制檯

一定要使用計算機名來登陸哦,不要使用IP登陸,不然後續配置一些東西的時候會遇到報錯


下面就開始上圖吧


4、配置分發

點選複製右鍵,選擇配置分發這個選項

(這是第一個坑,當時被坑的不要不要的,差點被搞死)

(如果你之前直接配置了釋出嚮導之類的,這個選項就看不見了,

建議是把你原來操作的,全部刪除了重新來,不然又會遇到另一個坑,這裡不詳細寫,在本文最後面寫)


選擇配置分發後,出現配置分發嚮導,直接下一步


選擇分發伺服器,我這裡是釋出和分發都放在釋出伺服器上,點下一步


設定前面已建立好的快照資料夾路徑,下一步


這裡就是坑的關鍵點,設定分發資料庫檔案所在路徑

分發資料庫名稱可以是預設也可以自己命名,我這裡預設了

(預設是存放在C盤的,如果不注意,就會把C盤撐爆)


直接下一步

直接下一步

完成即可


5、釋出服務

在釋出伺服器上操作

右鍵點選本地釋出,選擇新建釋出


出現新建釋出嚮導,直接下一步


選擇要釋出的資料庫,下一步

(你要同步那些表,就選哪個庫)


選擇事務釋出



選擇要釋出的表,勾選


勾選僅顯示列表中已選中的專案,可以只顯示你想要釋出的表

右鍵點選該表,選擇設定此表專案的屬性


可修改訂閱到的目標表名稱,這個可隨你心意

選擇截斷現有物件中的所有資料(其實這個只要快照重新初始化的話,目標表的資料一樣會重新初始化的)


點選確定後


直接下一步,下一步


勾選,立即建立快照並初始化

(這裡又有一個坑,千萬別勾選下面那個計劃執行代理,因為快照只要生成一次就夠了)

下一步

點選安全設定

選擇在SQLSERVER代理伺服器下執行

選擇使用SQLSERVER登入名,比如釋出伺服器的sa密碼即可

(當然,你也可以自己建立的一個使用者,只需這個使用者擁有釋出資料庫的db_owner許可權即可)


設定好了,確定,下一步


下一步,設定釋出名稱,完成



6、訂閱服務

在訂閱伺服器上進行操作

在訂閱伺服器上建立一個資料庫,這裡過程過於簡單就不贅述

右鍵點選本地訂閱,選擇新建訂閱

出現新建訂閱嚮導,直接下一步


選擇查詢SQLSERVER釋出伺服器


輸入帳密,連線登陸釋出伺服器


下一步


選擇在分發伺服器上執行所有代理,下一步


選擇之前建立好的訂閱資料庫,下一步


點選這個...

選擇在SQLSERVER代理服務執行

選擇SQLSERVER賬戶,這裡是訂閱伺服器的sa帳密


確定,下一步


預設連續執行,下一步

預設立即初始化,下一步



預設建立訂閱,下一步


點選完成,訂閱完成



後續的,就是自己檢查,釋出訂閱,資料是否成功。



7、各種騷操作

在釋出伺服器上,可以檢視 釋出快照,分發步驟執行日誌,訂閱監視等


右鍵點選本地釋出,選擇啟動複製監視器



這裡自己研究就可以了,很簡單的



這裡就是增量同步了,日誌讀取器代理,實際就是做事務日誌同步複製的


下面騷操作來啦,如果你之前看到那個 在本文最後寫的,就是這裡了


之前配置釋出訂閱的時候,比較菜鳥,不太會,就按著網上的,直接配了起來,

結果,因為分發資料檔案存放在了C盤,結果把C盤撐爆了。


這個時候怎麼辦,刪除重來?是的,但是刪除也是要有技巧的,不然還刪不掉,好坑哦


1、首先,先把訂閱伺服器上的訂閱服務刪除

2、把釋出伺服器上的釋出任務及釋出作業刪除

3、登陸master庫,使用命令刪除distribution庫(就是分發庫)

命令如下:

查詢訂閱資訊,如果為空,則跳過

exec sp_helpsubscriberinfo

如果不為空,則刪除

exec sp_dropsubscriber  '查出的訂閱名稱'

查詢分發釋出資訊,如果為空,則跳過

exec sp_helpdistpublisher

如果不為空,則刪除

exec sp_dropdistpublisher ' 查出的分發名稱'

刪除資料庫

exec sp_dropdistributiondb 'distribution'   --這個distribution是你建立的分發庫


如果刪不掉,設定offline再刪除

alter database distribution set offline

drop database distribution;


如果還是報錯刪不掉,那就可以試試,再建立釋出分發,再刪除。反覆刪,總能刪掉


記得,把對應的資料檔案和日誌檔案也要刪了

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-2657360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章