Brug en onlinemetode til at migrere til Azure SQL Database

Fuldført

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.

diagram, der viser replikeringstopologien, der involverer SQL Server og 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.

diagram, der viser nøglekomponenterne i en transaktionsreplikering.

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.

Skærmbillede, der viser, hvordan du starter snapshotagenten.

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:

Skærmbillede, der viser snapshotagentens status i en transaktionsreplikering.

Log Reader Agent:

Skærmbillede, der viser status for loglæseren i en transaktionsreplikering.

status for synkronisering af :

diagram, der viser synkroniseringsstatus i en transaktionsreplikering.

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.