1.兩台服務器,主服務器,從服務器,兩台服務器都安裝SQL Server 2008R2並且安裝相同表結構的數據庫(需要實時同步的數據庫)--追加:沒有主鍵的表不能進行數據同步
2.主服務器數據庫安裝完畢,打開SQL Server 配置管理器,把SQL Server 代理服務打開(已打開請忽略)

3.登錄主服務器數據庫,從數據庫左側菜單欄找到->復制->本地發布,右擊新建發布

4.默認主服務器當作分發服務器

5.快照文件夾最好新建一個目錄(需要手動在D盤新建目錄),默認目錄會有權限問題(對於新手權限問題不好解決)

6.選擇需要發布的數據庫

7.發布類型選擇事務發布(發布類型的區別可自行百度,此處不做敘述)

8.選擇需要發布的表(需要同步到從服務器數據庫表的數據)--追加:存儲過程、自定義函數都可以勾選同步

9.篩選表行(意思是表中的哪些字段你不需要同步到從服務器)

10.快照代理,選擇->立即創建快照並使快照保持可用狀態,以初始化訂閱

11.代理安全性,點擊安全設置,按照紅色框中設置即可


12.向導操作,選擇->創建發布->下一步

13.完成該向導,填寫一個發布名稱,點擊完成,到此步驟主服務器本地訂閱發布已經完成


14.登錄從服務器數據庫,從數據庫左側菜單欄找到->復制->本地訂閱->右擊新建訂閱->選擇查找SQL Server 發布服務器,數據庫服務器名稱要是主服務器計算機名稱,輸入登錄名和密碼


15.選擇剛才主服務器發布的訂閱

16.選擇運行分發代理的位置,勾選第一個,如果選擇第二個也需要開啟從服務器SQL Server代理服務

17.選擇訂閱服務器(從服務器),訂閱數據庫需要同步的數據庫(主服務器和從服務器熱備份的數據庫結構需要一致)

18.分發代理安全性,推薦按紅色框中設置,如下圖:


19.同步計划選擇連續運行

20.初始化訂閱

21.向導操作->創建訂閱->下一步->完成



22.刷新從服務器左側菜單欄下的本地訂閱,會出現剛剛創建好的訂閱,為了驗證設置是否成功,右擊創建好的訂閱->查看同步狀態,如圖顯示同步正在進行則說明雙機熱備份設置成功


23.測試配置是否生效,在主服務器數據庫通過updata語句修改某個表的字段值,然后查看從服務器數據庫是否對應修改即可
來自:https://www.cnblogs.com/itdaocaoren/p/10475497.html (評論:忘了事物復制吧,用Always on)
另一篇比較有參考價值的文章:https://www.cnblogs.com/ind9x/p/13192182.html
SQL Server發布訂閱異常處理
語句強制刪除發布
EXEC sp_removedbreplication 'WR_YK1'; --- 引號里是發布數據庫名稱
SQL2008發布訂閱報錯“進程無法在WIN-SERVER 上執行 sp_replcmds”
執行以下SQL腳本
首先執行
ALTER AUTHORIZATION ON DATABASE::[數據庫名] TO [sa] ALTER AUTHORIZATION ON DATABASE::[數據庫名] TO [SQL登錄用戶名]
然后執行
USE 數據庫名 GO sp_changedbowner 'SQL登錄用戶名'
最后執行
EXEC sp_repldone @xactid =NULL, @xact_segno =NULL, @numtrans = 0, @time =0, @reset =1 EXEC sp_replflush
如果還是不可以, 重啟SQL Server Agent服務。
修改機器名后
--查看當前數據庫服務器名稱:
select @@ServerName
--查看當前服務器名稱
select serverproperty('servername')
--修改數據庫服務器名稱
sp_dropserver 'old_servername'
sp_addserver 'new_servername','local'
--重啟數據庫服務,修改完成
--安全性->登陸名->右鍵,新建登陸名->選擇Windows身份驗證
select @@servername;
select serverproperty('servername')
如果這兩個結果不一致,說明機器改過名字,在配置復制的時候就會報上面的錯誤。
--要修復此問題
--執行下面的語句,完成后重新啟動SQL服務
if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'
end
最后別忘了重新啟動服務哦,啟動完后,在運行:
use master
go
select @@servername;
select serverproperty('servername')
發布訂閱 新建發布結束時候提示 distributor_admin 登錄失敗
曾經有做過發布訂閱,分發服務器已經產生此用戶,在分發服務器上將此用戶的密碼策略取消即可。
