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