เปิดใช้งานการสมัครใช้งานที่ต่ออายุการจําลองแบบทรานแซคชันใน SQL Server 2019
การแนะนําและข้อควรระวัง
บทความนี้มีไว้สําหรับการจําลองแบบใน SQL Server 2019 หนึ่งในฟังก์ชั่นในนั้นคือ "การสมัครสมาชิกแบบต่ออายุได้" เปิดใช้งาน
คุณลักษณะนี้ถูกเปิดใช้งานตามค่าเริ่มต้นใน SQL Server รุ่นก่อนหน้า แต่ถูกปิดใช้งานตั้งแต่ (อาจ) 2017
SQL Server รุ่นในอนาคตอาจเอาคุณลักษณะนี้ออก ยกเว้นการอัพเกรดสภาพแวดล้อมที่มีอยู่เราขอแนะนําให้คุณแทนที่สําหรับการก่อสร้างใหม่ด้วยการจําลองแบบรวม
- หนังสืออ้างอิง
สิ่งแวดล้อม
ใช้เซิร์ฟเวอร์สองตัว เซิร์ฟเวอร์หนึ่งตัว และ SQL Server สองตัว Windows Server อยู่ในสถานะที่ไม่มีการตั้งค่าเพิ่มเติมเกิดขึ้นทันทีหลังจากการติดตั้ง
- หน่วยที่ 1 (ด้านสิ่งพิมพ์)
-
- Windows Server 2019 รุ่นมาตรฐาน
- รุ่นนักพัฒนา SQL Server 2019 (รุ่นมาตรฐานหรือสูงกว่า)
- สตูดิโอการจัดการเซิร์ฟเวอร์ SQL 18.9.1
- หน่วยที่สอง (ฝั่งสมาชิก)
-
- Windows Server 2019 รุ่นมาตรฐาน
- SQL Server 2019 รุ่นด่วน
- สตูดิโอการจัดการเซิร์ฟเวอร์ SQL 18.9.1
วัตถุประสงค์
แม้ว่าระเบียนตารางในฐานข้อมูลเซิร์ฟเวอร์แรกหรือฐานข้อมูลที่สองจะถูกปรับปรุง ตรวจสอบให้แน่ใจว่าระเบียนตารางบนเซิร์ฟเวอร์ของกันและกันได้รับการทําข้อมูลให้ตรงกัน
โดยวิธีการที่หนึ่งในด้านสิ่งพิมพ์ก็ดี แต่ด้านสมาชิกสามารถมีจํานวนหน่วยใดก็ได้ นอกจากนี้ยังทํางานร่วมกับ SQL Server หลายอินสแตนซ์บนเซิร์ฟเวอร์เดียว
กําลังติดตั้ง SQL Server
การติดตั้ง SQL Server ไม่ใช่ส่วนหลักของเคล็ดลับเหล่านี้ ดังนั้นฉันจะไม่ลงรายละเอียด เฉพาะผู้ที่เกี่ยวข้องกับการจําลองแบบเท่านั้นที่แสดงรายการไว้
การติดตั้งด้านสิ่งพิมพ์ต้องใช้รุ่นมาตรฐานหรือสูงกว่า เคล็ดลับนี้ติดตั้งรุ่นนักพัฒนาเป็นสภาพแวดล้อมการทดสอบ
สมาชิกสบายดีกับ Express Edition แน่นอนว่ารุ่นอื่น ๆ ก็ดีขึ้นอยู่กับการกําหนดค่า DB
สําหรับการเลือกคุณลักษณะ ให้เลือก บริการกลไกจัดการฐานข้อมูล และการจําลองแบบ SQL Server สิ่งนี้เหมือนกันสําหรับทั้งด้านสิ่งพิมพ์และด้านสมาชิก
การกําหนดค่าอินสแตนซ์เป็นค่าเริ่มต้นสําหรับทั้งด้านสิ่งพิมพ์และด้านสมาชิก แม้ว่าคุณจะเปลี่ยนชื่ออินสแตนซ์ แต่ความแตกต่างคือ คุณจะระบุชื่ออินสแตนซ์ในข้อกําหนดของเซิร์ฟเวอร์ในภายหลังหรือไม่
ด้านสิ่งพิมพ์ ให้กําหนดค่า SQL Server Agent ให้เริ่มต้นโดยอัตโนมัติ คุณสามารถเปลี่ยนการตั้งค่านี้ได้ในภายหลัง
เคล็ดลับนี้รับรองความถูกต้องของการจําลองแบบด้วยบัญชี SQL Server sa ดังนั้น ให้เปิดใช้งานการรับรองความถูกต้องของ SQL Server ถ้าคุณไม่ต้องการใช้บัญชี SA ด้วยเหตุผลด้านความปลอดภัย ให้แทนที่ส่วนการรับรองความถูกต้องของ SQL Server ของคําอธิบายในภายหลังด้วยการรับรองความถูกต้องของ Windows หรือบัญชีผู้ใช้อื่น
ทําให้การตั้งค่านี้เหมือนกันบนเซิร์ฟเวอร์ทั้งสอง
กําลังติดตั้ง SQL Server Management Studio
ติดตั้ง SQL Server Management Studio ที่คุณดาวน์โหลด เนื่องจากหน้าจอการติดตั้งเป็นเพียงการติดตั้งคําอธิบายจึงถูกละไว้
รีสตาร์ท Windows หากคุณได้รับการพรอมต์ให้รีสตาร์ทหลังจากการติดตั้ง นอกจากนี้ ให้ติดตั้งโปรแกรมแก้ไขใดๆ ใน Windows Update ด้วย
การสร้างฐานข้อมูลและตารางด้านการประกาศ
ถ้าคุณสร้างตารางที่ด้านสิ่งพิมพ์ ด้านสมาชิกจะจําลองแบบตารางหรือระเบียนโดยอัตโนมัติ
วิธีการสร้างนั้นเหมือนกับขั้นตอนปกติดังนั้นฉันจะละเว้นรายละเอียด
คุณกําลังสร้างฐานข้อมูลที่ชื่อว่า Publication DB ใน SQL Server Management Studio
สร้างตารางชื่อ "ผู้ใช้" และลงทะเบียนคอลัมน์ดังนี้: สิ่งที่คุณต้องทําคือตรวจสอบการทําข้อมูลให้ตรงกันของเรกคอร์ด เพื่อให้ชื่อ หมายเลข และเนื้อหาคอลัมน์ของตารางสามารถเป็นอะไรก็ได้ อย่างไรก็ตาม จําเป็นต้องใช้เฉพาะคีย์หลักเท่านั้น
เพิ่มระเบียนสองสามระเบียนเพื่อให้แน่ใจว่าระเบียนนั้นได้รับการทําข้อมูลให้ตรงกันแล้วหลังจากสร้างการจําลองแบบแล้ว
การกําหนดค่าการเชื่อมต่อระยะไกล
กําหนดค่าให้อนุญาตให้มีการเข้าถึงระยะไกลไปยังฐานข้อมูลของเซิร์ฟเวอร์ของกันและกัน รายละเอียดสรุปได้ในเคล็ดลับต่อไปนี้
การตั้งค่าสิทธิ์ของโฟลเดอร์
บนเซิร์ฟเวอร์ที่ด้านสิ่งพิมพ์ ให้เปิดคุณสมบัติของโฟลเดอร์ต่อไปนี้ เส้นทางโฟลเดอร์ขึ้นอยู่กับรุ่นของ SQL Server และชื่ออินสแตนซ์
- C:\แฟ้มโปรแกรม\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\Repldata
จากแท็บความปลอดภัยให้เพิ่มบัญชี "SERVICE" และตั้งค่าเป็นควบคุมทั้งหมด
การตั้งค่าคอนฟิกการกระจาย
คราวนี้การกระจายจะถูกสร้างขึ้นบนเซิร์ฟเวอร์เดียวกันกับสิ่งพิมพ์
เริ่ม SQL Server Management Studio คลิกขวาที่ การจําลองแบบ แล้วเลือก กําหนดค่าการกระจาย
คลิก ถัดไป
ตรวจสอบ< "สร้างเซิร์ฟเวอร์ของคุณเอง>ผู้จัดจําหน่ายของคุณเอง"
หลังจากนั้นคลิก "ถัดไป" เนื่องจากจะทําให้เสร็จ
การสร้างสิ่งพิมพ์
แต่เดิมจะถูกสร้างขึ้นจากวิซาร์ดดังที่แสดงในรูปต่อไปนี้ ใน SQL Server 2019 การสร้างจากตัวช่วยสร้างจะไม่เปิดใช้งาน "การบอกรับสมาชิกแบบหมุนเวียน" และไม่อนุญาตให้ทําข้อมูลระเบียนให้ตรงกันระหว่างตาราง
ดังนั้นเราจึงใช้ T-SQL เพื่อสร้างสิ่งพิมพ์ที่นี่
ต่อไปนี้เป็น SQL สําหรับการสร้างสิ่งพิมพ์ที่มีการรับรองความถูกต้องของ SQL Server: กรุณาเปลี่ยนรหัสผ่านตามการตั้งค่าของคุณ
-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB';
SET @publication = N'パブリケーション';
SET @login = 'sa';
SET @password = 'saパスワード';
USE [パブリケーションDB]
-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'publish',
@value = N'true';
-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_sync_tran = N'true',
@allow_queued_tran = N'true',
@allow_pull = N'true',
@independent_agent = N'true',
-- 関連するデフォルトのプロパティを明示的に宣言する
@conflict_policy = N'pub wins';
-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot
@publication = @publication,
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
GO
เมื่อใช้การรับรองความถูกต้องของ Windows ให้เปลี่ยนส่วน "sp_addlogreader_agent" และ "sp_addpublication_snapshot" ดังนี้
การรับรองความถูกต้องของเซิร์ฟเวอร์ SQL
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
การรับรองความถูกต้องของ Windows
@job_login = @login,
@job_password = @password,
@publisher_security_mode = 1;
ถ้าสร้างสําเร็จ คุณจะเห็นสิ่งต่อไปนี้
นอกจากนี้ ให้เปิดคุณสมบัติของสิ่งพิมพ์ที่สร้างและตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน "การสมัครใช้งานแบบต่ออายุได้" แล้ว
การระบุบทความ
แต่เดิมถ้าคุณสร้างด้วยตัวช่วยสร้างคุณจะระบุบทความในเวลาเดียวกัน เนื่องจากสคริปต์ข้างต้นไม่รวมการประมวลผลบทความจึงถูกระบุจากคุณสมบัติ
เลือก "บทความ" จากเมนูทางด้านซ้ายตรวจสอบตารางที่คุณต้องการซิงโครไนซ์และคลิกปุ่มตกลง
msrepl_tran_versionจะถูกเพิ่มลงในคอลัมน์ของตารางที่จะทําข้อมูลให้ตรงกัน และทริกเกอร์ตารางจะถูกเพิ่มในเวลาเดียวกัน
สร้างการบอกรับเป็นสมาชิก
คลิกขวาที่สิ่งพิมพ์ที่คุณเพิ่งสร้าง แล้วเลือก การสมัครใช้งานใหม่
คลิก ถัดไป
เลือกสิ่งพิมพ์ที่คุณสร้าง
เลือก เรียกใช้ตัวแทนทั้งหมดในชื่อผู้จัดจําหน่าย <เซิร์ฟเวอร์>
คลิกปุ่ม เพิ่มสมาชิก SQL Server
ระบุเซิร์ฟเวอร์ (+ ชื่ออินสแตนซ์) เพื่อลงทะเบียนเป็นสมาชิก
ถ้าคุณไม่มีฐานข้อมูลสมาชิก ให้สร้างฐานข้อมูลใหม่ ถ้ามีอยู่แล้ว ให้เลือกรายการนั้นเนื่องจากรายการสิ่งที่เลือกถูกแสดง
หลังจากที่คุณระบุฐานข้อมูลแล้ว ให้คลิก ถัดไป
หากคุณมีสมาชิกมากกว่าหนึ่งคนคุณสามารถลงทะเบียนได้มากเท่าที่คุณต้องการที่นี่
คลิกปุ่ม "..."
ที่นี่ตัวแทนทํางานภายใต้บัญชี sa แต่โปรดตั้งค่าตามสภาพแวดล้อมของคุณ
เลือก เรียกใช้อย่างต่อเนื่อง
การตั้งค่า "การสมัครสมาชิกแบบต่ออายุได้" ควรใช้งานได้
ในกรณีของ "ยอมรับการเปลี่ยนแปลงในเวลาเดียวกัน" จะมีการทําข้อมูลให้ตรงกันทันที แต่เซิร์ฟเวอร์ทั้งหมดจะต้องทํางานอยู่
"การเปลี่ยนแปลงคิวและยอมรับถ้าเป็นไปได้" จะสะสมการเปลี่ยนแปลงในคิว ดังนั้นการเปลี่ยนแปลงเหล่านั้นจะถูกยอมรับเมื่อเซิร์ฟเวอร์กําลังทํางานอยู่ แม้ว่าเซิร์ฟเวอร์จะไม่ได้ทํางานอยู่ก็ตาม อย่างไรก็ตาม การกําหนดเวลาการทําข้อมูลให้ตรงกันช้า
เลือก ใช้เซิร์ฟเวอร์ที่เชื่อมโยงหรือเซิร์ฟเวอร์ระยะไกลที่กําหนดไว้ล่วงหน้า
เลือกตอนนี้
คลิก ถัดไป
คลิกปุ่ม เสร็จสิ้น
ปิดถ้าไม่มีข้อผิดพลาด
หลังจากนั้นครู่หนึ่งคุณจะเห็นว่าฐานข้อมูลได้ถูกสร้างขึ้นในด้านสมาชิกและตารางได้ถูกสร้างขึ้นด้วย
คุณสามารถตรวจสอบว่ามีการทําข้อมูลเรกคอร์ดให้ตรงกันด้วย
หากไม่ซิงค์หลังจากผ่านไประยะหนึ่งโปรดทําดังต่อไปนี้
คลิกขวาที่การสมัครใช้งานที่สร้างขึ้น แล้วเลือก เริ่มต้นใหม่
เลือก "ใช้สแนปช็อตใหม่" และคลิกปุ่ม "ตั้งค่าให้เริ่มต้นใหม่"
ถ้ามีข้อผิดพลาดเกิดขึ้น ให้ลองอีกครั้ง
การตรวจสอบการดําเนินงาน
ลองเพิ่มหรือปรับเปลี่ยนตารางที่ด้านสิ่งพิมพ์
รอสองสามวินาทีหรือมากกว่านั้นเพื่อให้แน่ใจว่าได้ซิงค์กับสมาชิกแล้ว
ตอนนี้เรามาแก้ไขระเบียนในด้านสมาชิก
คุณสามารถตรวจสอบว่าได้ทําข้อมูลให้ตรงกันกับด้านสิ่งพิมพ์แล้ว
หากคุณมีสมาชิกหลายคนที่ลงทะเบียนตรวจสอบให้แน่ใจว่าพวกเขาได้รับการซิงโครไนซ์ระหว่างสมาชิก