ใช้วิธีการออนไลน์เพื่อโยกย้ายไปยังฐานข้อมูล Azure SQL

เสร็จสมบูรณ์เมื่อ

หากคุณต้องการให้ฐานข้อมูลยังคงออนไลน์กับผู้ใช้ตลอดกระบวนการโยกย้าย คุณสามารถใช้การจําลองแบบทรานแซคชันเพื่อย้ายข้อมูลได้ การจําลองแบบทรานแซคชันเป็นวิธีออนไลน์วิธีเดียวเท่านั้นที่พร้อมใช้งานสําหรับการโยกย้ายไปยังฐานข้อมูล Azure SQL

ในสถานการณ์ของผู้ผลิตจักรยานของเรา คลังสินค้าจะทํางานเป็นเวลา 24 ชั่วโมง 7 วันต่อสัปดาห์ และไม่มีรอบระยะเวลาของการไม่ได้ใช้งาน คณะกรรมการของคุณต้องการตรวจสอบให้แน่ใจว่าฐานข้อมูลสินค้าคงคลังพร้อมใช้งานตลอดเวลาแม้ในระหว่างการโยกย้ายไปยังฐานข้อมูล Azure SQL

แผนภาพที่แสดงโทโพโลยีการจําลองแบบที่เกี่ยวข้องกับ SQL Server และฐานข้อมูล Azure SQL

การจําลองแบบทรานแซคชันคืออะไร

Transactional การจําลองแบบเป็นวิธีย้ายข้อมูลระหว่างเซิร์ฟเวอร์ฐานข้อมูลที่เชื่อมต่ออย่างต่อเนื่อง

กระบวนการเริ่มต้นด้วยสแนปช็อตของวัตถุและข้อมูลของฐานข้อมูลการเผยแพร่ เมื่อนําสแนปช็อตเริ่มต้นแล้ว การเปลี่ยนแปลงใด ๆ ต่อมาของข้อมูลหรือสคีมาที่ Publisher จะถูกส่งไปยังฐานข้อมูล Azure SQL ในใกล้เคียงกับเวลาจริงเมื่อเกิดขึ้น

แผนภาพที่แสดงคอมโพเนนต์สําคัญในการจําลองแบบทรานแซคชัน

Azure SQL Database สนับสนุนทั้งการจําลองแบบทรานแซคชันและสแนปช็อตในฐานะสมาชิกแบบพุช ซึ่งหมายความว่า Azure SQL Database สามารถรับและนําการเปลี่ยนแปลงไปใช้จากผู้เผยแพร่โดยใช้การจําลองแบบทรานแซคชันหรือสแนปช็อต

ผู้เผยแพร่และ/หรือผู้จัดจําหน่ายสามารถเป็นอินสแตนซ์ของ SQL Server ที่กําลังทํางานภายในองค์กร บนเครื่องเสมือน Azure ในระบบคลาวด์ หรือเป็นอินสแตนซ์ที่จัดการโดย Azure SQL

คุณสามารถกําหนดค่าการจําลองแบบทรานแซคชันผ่าน SQL Server Management Studio หรือโดยการดําเนินการคําสั่ง Transact-SQL ในผู้เผยแพร่ ไม่สามารถกําหนดค่าการจําลองแบบทรานแซคชันจากพอร์ทัล Azure ได้

การจําลองแบบทางทรานแซคชันต้องการคอมโพเนนต์ต่อไปนี้:

บทบาท คำจำกัดความ
ผู้เผยแพร่ อินสแตนซ์ฐานข้อมูลที่โฮสต์ข้อมูลที่จะทําสําเนา (แหล่งที่มา)
สมาชิก รับข้อมูลที่จําลองแบบโดย Publisher (เป้าหมาย)
ผู้จัดจําหน่าย รวบรวมการเปลี่ยนแปลงในบทความจาก Publisher และเผยแพร่ไปยัง สมาชิก
บทความของ วัตถุฐานข้อมูล ตัวอย่างเช่น ตารางที่รวมอยู่ใน การเผยแพร่
การเผยแพร่ คอลเลกชันของบทความอย่างน้อยหนึ่งบทความจากฐานข้อมูลที่กําลังถูกจําลองแบบ
การสั่งซื้อโดยบอกรับเป็นสมาชิก คําขอจาก ผู้สมัครใช้งาน สําหรับ การเผยแพร่

ตั้งค่าการจําลองแบบธุรกรรม

ทําตามขั้นตอนด้านล่างเพื่อโยกย้ายตาราง [Person].[Person] จากฐานข้อมูล AdventureWorks ไปยังฐานข้อมูล Azure SQL โดยไม่มีเวลาหยุดทํางาน การจําลองแบบทรานแซคชันสามารถใช้การเข้าสู่ระบบการรับรองความถูกต้องของ SQL Server เพื่อเชื่อมต่อกับฐานข้อมูล Azure SQL เท่านั้น

พารามิเตอร์ คำจำกัดความ
@distributor ชื่ออินสแตนซ์ต้นทาง
@publisher ชื่ออินสแตนซ์ต้นทาง
@subscriber Azure SQL Database ในรูปแบบ: <server>.database.windows.net ต้องมีฐานข้อมูล Azure SQL ก่อนที่จะเรียกใช้สคริปต์
@dbname ชื่อฐานข้อมูลที่แหล่งที่มา
@publisher_login ผู้ใช้ SQL ที่มีสิทธิ์ที่จําเป็นที่แหล่งข้อมูล
@publisher_password รหัสผ่านสําหรับผู้ใช้ SQL
@destination_db ชื่อฐานข้อมูลที่ปลายทาง
@subscriber_login ผู้ใช้ SQL ที่มีสิทธิ์ที่จําเป็นที่ปลายทาง
@subscriber_password รหัสผ่านสําหรับผู้ใช้ SQL
@working_directory การจําลองแบบไดเรกทอรีที่ทํางานอยู่ เปลี่ยนตําแหน่งที่ตั้งนี้ตามความเหมาะสม

ปรับพารามิเตอร์ด้านบนตามสภาพแวดล้อมของคุณเองเมื่อเรียกใช้สคริปต์

สร้างผู้จัดจําหน่าย

สคริปต์ต่อไปนี้สร้างฐานข้อมูลผู้จัดจําหน่าย ผู้เผยแพร่และตัวแทน

USE [master]
GO

EXEC sp_adddistributor @distributor = N'CONTOSO-SRV', @password = N''
GO

EXEC sp_adddistributiondb 
		@database = N'distribution', 
		@data_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data', 
		@data_file = N'distribution.MDF', 
		@data_file_size = 13, 
		@log_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data', 
		@log_file = N'distribution.LDF', 
		@log_file_size = 9, 
		@min_distretention = 0, 
		@max_distretention = 72, 
		@history_retention = 48, 
		@deletebatchsize_xact = 5000, 
		@deletebatchsize_cmd = 2000, 
		@security_mode = 1
GO

-- Adding the distribution publishers
exec sp_adddistpublisher 
	@publisher = N'CONTOSO-SRV', 
	@distribution_db = N'distribution',
	@security_mode = 1, 
	@working_directory = N'C:\REPL', 
	@trusted = N'false', 
	@thirdparty_flag = 0, 
	@publisher_type = N'MSSQLSERVER'
GO

exec sp_addsubscriber 
	@subscriber = N'contoso.database.windows.net', 
	@type = 0, 
	@description = N'Azure SQL Database (target)'
GO

-- Enabling the replication database
use master
exec sp_replicationdboption 
	@dbname = N'AdventureWorks', 
	@optname = N'publish', 
	@value = N'true'
GO

--Adds a Log Reader agent for the AdventureWorks database. 
exec [AdventureWorks].sys.sp_addlogreader_agent 
	@publisher_security_mode = 1
GO

--Adds a Queue Reader agent for the distributor.
exec [AdventureWorks].sys.sp_addqreader_agent 
	@frompublisher = 1
GO

สร้างการเผยแพร่ธุรกรรม

สคริปต์ต่อไปนี้สร้างการเผยแพร่ทรานแซคชันของฐานข้อมูล AdventureWorks จากผู้เผยแพร่

USE [AdventureWorks]
GO

EXEC sp_addpublication 
	@publication = N'REPL-AdventureWorks', 
	@description = N'Transactional publication of database ''AdventureWorks'' from Publisher ''CONTOSO-SRV''.', 
	@sync_method = N'concurrent', 
	@retention = 0, 
	@allow_push = N'true', 
	@allow_pull = N'true', 
	@allow_anonymous = N'true', 
	@enabled_for_internet = N'false', 
	@snapshot_in_defaultfolder = N'false', 
	@alt_snapshot_folder = N'C:\REPL', 
	@compress_snapshot = N'true', 
	@ftp_port = 21,
	@ftp_login = N'anonymous', 
	@allow_subscription_copy = N'false', 
	@add_to_active_directory = N'false', 
	@repl_freq = N'continuous', 
	@status = N'active', 
	@independent_agent = N'true', 
	@immediate_sync = N'true', 
	@allow_sync_tran = N'false',
	@autogen_sync_procs = N'false', 
	@allow_queued_tran = N'false', 
	@allow_dts = N'false', 
	@replicate_ddl = 1, 
	@allow_initialize_from_backup = N'false', 
	@enabled_for_p2p = N'false',
	@enabled_for_het_sub = N'false'
GO

exec sp_addpublication_snapshot 
	@publication = N'REPL-AdventureWorks', 
	@frequency_type = 1, 
	@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 = 0,
	@active_end_date = 0, 
	@publisher_security_mode = 0,
	@publisher_login = N'sqladmin', 
	@publisher_password = N'<pwd>'

สร้างบทความสําหรับการเผยแพร่

สคริปต์ต่อไปนี้สร้างบทความสําหรับตาราง [Person].[Person]

USE [AdventureWorks]
GO

EXEC sp_addarticle 
	@publication = N'REPL-AdventureWorks', 
	@article = N'Person', 
	@source_owner = N'Person', 
	@source_object = N'Person',
	@type = N'logbased', 
	@description = N'', 
	@creation_script = N'',
	@pre_creation_cmd = N'drop', 
	@schema_option = 0x000000000803509F, 
	@identityrangemanagementoption = N'none', 
	@destination_table = N'Person',
	@destination_owner = N'Person',
	@status = 24, 
	@vertical_partition = N'false', 
	@ins_cmd = N'CALL [sp_MSins_PersonPerson]', 
	@del_cmd = N'CALL [sp_MSdel_PersonPerson]', 
	@upd_cmd = N'SCALL [sp_MSupd_PersonPerson]'
GO

สร้างการสมัครใช้งานและตัวแทนการสมัครใช้งาน

สคริปต์ต่อไปนี้สร้างการสมัครใช้งานแบบพุชไปยังสมาชิก Azure SQL Database

USE [AdventureWorks]
GO

EXEC sp_addsubscription 
	@publication = N'REPL-AdventureWorks', 
	@subscriber = N'contoso.database.windows.net', 
	@destination_db = N'my-db',
	@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'REPL-AdventureWorks', 
	@subscriber = N'contoso.database.windows.net', 
	@subscriber_db = N'my-db',
	@job_login = null, 
	@job_password = null, 
	@subscriber_security_mode = 0, 
	@subscriber_login = N'sqladmin',
	@subscriber_password = '<pwd>', 
	@frequency_type = 64, 
	@frequency_interval = 1, 
	@frequency_relative_interval = 1, 
	@frequency_recurrence_factor = 0,
	@frequency_subday = 4, 
	@frequency_subday_interval = 5,
	@active_start_time_of_day = 0, 
	@active_end_time_of_day = 235959, 
	@active_start_date = 0, 
	@active_end_date = 0, 
	@dts_package_location = N'Distributor'
GO

เริ่มต้นและตรวจสอบการจําลองแบบ

การจัดการการจําลองแบบและการตรวจสอบไม่ได้รับการสนับสนุนจากฐานข้อมูล Azure SQL ให้ดําเนินการกิจกรรมเหล่านี้จาก SQL Server แทน เมื่อต้องการเริ่มต้นการจําลองแบบ ให้เริ่มงานสแนปช็อต งานตัวอ่านบันทึก และตัวแทนจําหน่าย

คุณสามารถตรวจสอบ ของตัวแทนสแนปช็อตของ และ Log Reader Agent โดยการคลิกขวาที่การเผยแพร่และเลือกตัวเลือกที่เหมาะสม ถ้ายังไม่มีการเรียกใช้ตัวแทน ให้เริ่มทํางาน

สกรีนช็อตที่แสดงวิธีการเปิดใช้งานตัวแทนสแนปช็อต

หากต้องการดูสถานะการซิงโครไนซ์ให้คลิกขวาบนการสมัครใช้งานเลือก ดูสถานะการซิงโครไนซ์แล้วเริ่มตัวแทน ถ้าคุณพบข้อผิดพลาดใด ๆ ให้ตรวจสอบประวัติงานตัวแทนบน SQL Server Agent ถ้าตัวแทนทํางานตามที่คาดไว้ คุณควรเห็นผลลัพธ์ต่อไปนี้

ตัวแทนสแนปช็อตของ :

สกรีนช็อตที่แสดงสถานะของตัวแทนสแนปช็อตในการจําลองทรานแซคชัน

ตัวแทนตัวอ่านบันทึก :

สกรีนช็อตที่แสดงสถานะตัวอ่านบันทึกในการจําลองแบบทรานแซคชัน

สถานะการซิงโครไนซ์ของ :

แผนภาพที่แสดงสถานะการซิงโครไนซ์ในการจําลองแบบทรานแซคชัน

หลังจากที่ข้อมูลถูกจําลองแบบทั้งหมดไปยังฐานข้อมูล SQL Azure คุณสามารถนําการเชื่อมต่อไปยังฐานข้อมูลสมาชิก แล้วหยุดและเอาการจําลองแบบออกได้

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการกําหนดค่าที่ได้รับการสนับสนุน โปรดดู การจําลองแบบไปยังฐานข้อมูล Azure SQL