Brug en onlinemetode til at migrere til Azure SQL Database
Hvis du har brug for, at en database forbliver online for brugerne under hele overførselsprocessen, kan du bruge transaktionsreplikering til at flytte dataene. Transaktionsreplikering er den eneste onlinemetode, der er tilgængelig til overførsel til Azure SQL Database.
I vores cykelproducentscenarie kører varehuse 24 timer, 7 dage om ugen, og der er ingen perioder med inaktivitet. Din bestyrelse vil gerne være sikker på, at lagerdatabasen er konstant tilgængelig, selv under migreringen til Azure SQL Database.
Hvad er transaktionsreplikering?
transaktionsreplikering er en måde at flytte data mellem databaseservere, der konstant er forbundet.
Processen starter med et snapshot af objekter og data i publikationsdatabasen. Når det første snapshot er taget, leveres eventuelle efterfølgende ændringer af dataene eller skemaet i Publisher typisk til Azure SQL Database i næsten realtid, efterhånden som de opstår.
Azure SQL Database understøtter både replikering af transaktioner og snapshots som push-abonnent. Det betyder, at Azure SQL Database kan modtage og anvende ændringer fra en udgiver ved hjælp af enten en transaktions- eller snapshotreplikering.
Udgiveren og/eller distributøren kan være en forekomst af SQL Server, der enten kører i det lokale miljø, på en virtuel Azure-maskine i cloudmiljøet eller som en Azure SQL Managed Instance.
Du kan konfigurere transaktionsreplikering via SQL Server Management Studio eller ved at udføre Transact-SQL sætninger på udgiveren. Transaktionsreplikering kan ikke konfigureres fra Azure Portal.
Transaktionsreplikering kræver følgende komponenter:
| Rolle | Definition |
|---|---|
| Udgiver | En databaseforekomst, der er vært for de data, der skal replikeres (kilde). |
| abonnent | Modtager de data, der replikeres af Publisher (destination). |
| distributør | Indsamler ændringer i artiklerne fra en Publisher- og distribuerer dem til de abonnenter. |
| artikel | Et databaseobjekt. en tabel, der er inkluderet i Publication. |
| publikation | En samling af en eller flere artikler fra den database, der replikeres. |
| Abonnement | En anmodning fra en abonnent om en publikation. |
Konfigurer en transaktionsreplikering
Følg nedenstående trin for at overføre tabellen [Person].[Person] fra AdventureWorks database til Azure SQL Database uden nedetid. Transaktionsreplikering kan kun bruge SQL Server-godkendelseslogon til at oprette forbindelse til Azure SQL Database.
| Parameter | Definition |
|---|---|
@distributor |
Navn på kildeforekomst. |
@publisher |
Navn på kildeforekomst. |
@subscriber |
Azure SQL Database i formatet: <server>.database.windows.net. Azure SQL Database skal findes, før scriptet køres. |
@dbname |
Databasenavn ved kilden. |
@publisher_login |
SQL-bruger med påkrævede tilladelser i kilden. |
@publisher_password |
Adgangskode for SQL-brugeren. |
@destination_db |
Databasenavn på destinationen. |
@subscriber_login |
SQL-bruger med påkrævede tilladelser på destinationen. |
@subscriber_password |
Adgangskode for SQL-brugeren. |
@working_directory |
Replikeringsarbejdsmappe. Rediger denne placering efter behov. |
Juster parametrene ovenfor i henhold til dit eget miljø, når du kører scriptet.
Opret distributøren
Følgende script opretter distributørdatabasen, distributørudgivere og agenterne.
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
Opret transaktionspublikationen
Følgende script opretter den transaktionspublikation af AdventureWorks-databasen fra udgiveren.
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>'
Opret artiklen til publikationen
Følgende script opretter artiklen for tabellen [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
Opret abonnementet og abonnementsagenten
Følgende script opretter pushabonnementet på Azure SQL Database-abonnenten.
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
Start og overvåg replikering
Replikeringsstyring og -overvågning understøttes ikke fra Azure SQL Database. Udfør i stedet disse aktiviteter fra SQL Server. Start snapshotjobbet, loglæserjobbet og distributørjobbet for at starte replikeringen.
Du kan overvåge Snapshot Agent- og Log Reader Agent- ved at højreklikke på publikationen og vælge den relevante indstilling. Hvis agenterne ikke kører, så start dem.
Hvis du vil have vist synkroniseringsstatussen, skal du højreklikke på abonnementet, vælge Vis synkroniseringsstatusog derefter starte agenten. Hvis du får vist fejlmeddelelser, skal du kontrollere agentjobhistorikken på SQL Server Agent. Hvis agenterne kører som forventet, kan du se følgende resultater.
Snapshot-agent:
Log Reader Agent:
status for synkronisering af :
Når dataene er replikeret fuldt ud til Azure SQL Database, kan du dirigere forbindelserne til abonnentdatabasen og derefter stoppe og fjerne replikeringen.
Du kan få mere at vide om understøttede konfigurationer under Replikering til Azure SQL Database.