星期六, 10月 09, 2021

[SQL] 交易式複寫-建立訂閱

該筆記延續 [SQL] 交易式複寫-設定發行,根據 教學課程:設定兩個完全連線的伺服器之間的複寫 (異動) 文章來設定散發,該文章作法是利用複寫精靈來設定訂閱

建立交易式發行集的訂閱

SSMS => 複寫 => 發行集 => 新增訂閱

[SQL] 交易式複寫-建立訂閱-1

啟動訂閱精靈

[SQL] 交易式複寫-建立訂閱-2

選擇發行者、資料庫與發行集

[SQL] 交易式複寫-建立訂閱-3

散發代理程式位置,官方文章 訂閱發行集 內的簡易說明
  • 發送訂閱:「訂閱者」不需發出請求,「發行者」便會將變更傳播給「訂閱者」
  • 提取訂閱:「訂閱者」必須請求傳送「發行者」中的變更。 
[SQL] 交易式複寫-建立訂閱-4

加入訂閱者 => 加入 SQL Server 訂閱者

[SQL] 交易式複寫-建立訂閱-5

新增 Node2\SQL2019 訂閱並新增訂閱資料庫 - ProductReplica DB,設定完成後會在 Node2\SQL2019 上新增 DB,如截圖

[SQL] 交易式複寫-建立訂閱-6

散發代理程式安全性

[SQL] 交易式複寫-建立訂閱-7

使用 Node1\repl_distribution Windows 帳號
 
[SQL] 交易式複寫-建立訂閱-8

散發代理程式安全性設定完成

[SQL] 交易式複寫-建立訂閱-9

同步排程:代理程式排程設定是對應 Job 排程類型,圖是把精靈步驟和 Job 截圖疊在一起說明

代理程式排程設定Job 排程類型
連續執行當 SQL Server Agent 啟動時自動啟動
僅在需要時執行執行一次
定義排程重覆執行

[SQL] 交易式複寫-建立訂閱-10

初始化訂閱

[SQL] 交易式複寫-建立訂閱-11

完成訂閱精靈設定並產生 Script

[SQL] 交易式複寫-建立訂閱-12

指定 Script 存放位置

[SQL] 交易式複寫-建立訂閱-13

完成精靈

[SQL] 交易式複寫-建立訂閱-14

訂閱建立完成

[SQL] 交易式複寫-建立訂閱-15

在 SQL Server Agent 內可以看見有 Node1\SQL2019-AdventureWorks2019-Adworkproducttrans-Node2\SQL2019,而該 Job 名稱,根據 指定同步處理排程 文章內容,規則為 <Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>

[SQL] 交易式複寫-建立訂閱-16

Script 內容
-----------------開始: 在發行者 'NODE1\SQL2019' 端執行的指令碼-----------------
use [AdventureWorks2019]
exec sp_addsubscription 
	@publication = N'Advworksproducttrans', 
	@subscriber = N'NODE2\SQL2019', 
	@destination_db = N'AdventureWorks2019', 
	@subscription_type = N'Push', 
	@sync_type = N'automatic', 
	@article = N'all', 
	@update_mode = N'read only', 
	@subscriber_type = 0

exec sp_addpushsubscription_agent 
	@publication = N'Advworksproducttrans', 
	@subscriber = N'NODE2\SQL2019', 
	@subscriber_db = N'AdventureWorks2019', 
	@job_login = N'Node1\repl_distribution', 
	@job_password = null, 
	@subscriber_security_mode = 1, 
	@frequency_type = 64, 
	@frequency_interval = 0, 
	@frequency_relative_interval = 0, 
	@frequency_recurrence_factor = 0, 
	@frequency_subday = 0, 
	@frequency_subday_interval = 0, 
	@active_start_time_of_day = 0, 
	@active_end_time_of_day = 235959, 
	@active_start_date = 20211005, 
	@active_end_date = 99991231, 
	@enabled_for_syncmgr = N'False', 
	@dts_package_location = N'Distributor'
GO
-----------------結束: 在發行者 'NODE1\SQL2019' 端執行的指令碼-----------------
在訂閱者端設定資料庫權限


在 Node2 上授予 repl_distrubution 為 ProductReplica DB 的 db_owner 角色

[SQL] 交易式複寫-建立訂閱-17

檢視訂閱的同步處理狀態

[SQL] 交易式複寫-建立訂閱-18

[SQL] 交易式複寫-建立訂閱-19

交易式複寫執行結果

Node2 上的 ProductReplica.Production.Product 資料欄位沒有看見 StandardCost 和 ListPrice 兩個欄位

   [SQL] 交易式複寫-建立訂閱-20

SafeStockLevel > 500 資料並沒有同步過來 Node2

[SQL] 交易式複寫-建立訂閱-21

其他觀察

快照資料集初始化

[SQL] 交易式複寫-建立訂閱-24
Node2 上也會有對應的訂閱

[SQL] 交易式複寫-建立訂閱-23

SQL Server Agent 作業活動監視器內,有交易式複寫相關的 Job 一覽表,可以透過 [類別目錄] 欄位資訊來了解 Job 存在目的

[SQL] 交易式複寫-建立訂閱-22


沒有留言:

張貼留言