Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server – Linux
I den här självstudien konfigurerar du SQL Server-replikering av ögonblicksbilder i Linux med två instanser av SQL Server med hjälp av Transact-SQL (T-SQL). Utgivaren och distributören finns på samma instans och prenumeranten finns på en separat instans.
- Aktivera SQL Server-replikeringsagenter i Linux
- Skapa en exempeldatabas
- Konfigurera ögonblicksbildmappen för åtkomst till SQL Server-agenter
- Konfigurera distributören
- Konfigurera utgivaren
- Konfigurera publicering och artiklar
- Konfigurera prenumerant
- Kör replikeringsjobben
Alla replikeringskonfigurationer kan konfigureras med lagrade procedurer för replikering.
Förutsättningar
För att slutföra den här självstudien behöver du:
Två instanser av SQL Server med den senaste versionen av SQL Server på Linux
Ett verktyg för att utfärda T-SQL-frågor för att konfigurera replikering, till exempel sqlcmd eller SQL Server Management Studio
Se Använda SQL Server Management Studio i Windows för att hantera SQL Server på Linux.
Not
SQL Server-replikering stöds i Linux i SQL Server 2017 (14.x) (CU 18) och senare versioner.
Detaljerade steg
Aktivera SQL Server-replikeringsagenter i Linux. Kör följande kommandon i terminalen på båda värddatorerna.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true sudo systemctl restart mssql-serverSkapa exempeldatabasen och tabellen. På utgivaren skapar du en exempeldatabas och tabell som fungerar som artiklar för en publikation.
CREATE DATABASE Sales; GO USE [Sales]; GO CREATE TABLE Customer ( [CustomerID] INT NOT NULL, [SalesAmount] DECIMAL NOT NULL ); GO INSERT INTO Customer (CustomerID, SalesAmount) VALUES (1, 100), (2, 200), (3, 300); GOPå den andra SQL Server-instansen skapar prenumeranten databasen för att ta emot artiklarna.
CREATE DATABASE Sales; GOSkapa mappen ögonblicksbild för SQL Server-agenter att läsa/skriva till på distributören, skapa mappen ögonblicksbild och bevilja åtkomst till "mssql"-användare
sudo mkdir /var/opt/mssql/data/ReplData/ sudo chown mssql /var/opt/mssql/data/ReplData/ sudo chgrp mssql /var/opt/mssql/data/ReplData/Konfigurera distributör. I det här exemplet är utgivaren också distributör. Kör följande kommandon på utgivaren för att konfigurera instansen för distribution.
DECLARE @distributor AS SYSNAME; DECLARE @distributorlogin AS SYSNAME; DECLARE @distributorpassword AS SYSNAME; -- Specify the distributor name. Use 'hostname' command on in terminal to find the hostname SET @distributor = N'<distributor instance name>'; -- In this example, it will be the name of the publisher SET @distributorlogin = N'<distributor login>'; SET @distributorpassword = N'<distributor password>'; -- Specify the distribution database. USE master; EXECUTE sp_adddistributor @distributor = @distributor; -- this should be the hostname -- Log into distributor and create Distribution Database. -- In this example, our publisher and distributor is on the same host EXECUTE sp_adddistributiondb @database = N'distribution', @log_file_size = 2, @deletebatchsize_xact = 5000, @deletebatchsize_cmd = 2000, @security_mode = 0, @login = @distributorlogin, @password = @distributorpassword; GO DECLARE @snapshotdirectory AS NVARCHAR (500); SET @snapshotdirectory = N'/var/opt/mssql/data/ReplData/'; -- Log into distributor and create Distribution Database. -- In this example, our publisher and distributor is on the same host USE [distribution]; GO IF (NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'UIProperties' AND type = 'U')) CREATE TABLE UIProperties(id INT); IF (EXISTS (SELECT * FROM ::fn_listextendedproperty ('SnapshotFolder', 'user', 'dbo', 'table', 'UIProperties', NULL, NULL))) EXECUTE sp_updateextendedproperty N'SnapshotFolder', @snapshotdirectory, 'user', dbo, 'table', 'UIProperties'; ELSE EXECUTE sp_addextendedproperty N'SnapshotFolder', @snapshotdirectory, 'user', dbo, 'table', 'UIProperties'; GOKonfigurera utgivare. Kör följande T-SQL-kommandon på utgivaren.
DECLARE @publisher AS SYSNAME; DECLARE @distributorlogin AS SYSNAME; DECLARE @distributorpassword AS SYSNAME; -- Specify the distributor name. Use 'hostname' command on in terminal to find the hostname SET @publisher = N'<instance name>'; SET @distributorlogin = N'<distributor login>'; SET @distributorpassword = N'<distributor password>'; -- Specify the distribution database. -- Adding the distribution publishers EXECUTE sp_adddistpublisher @publisher = @publisher, @distribution_db = N'distribution', @security_mode = 0, @login = @distributorlogin, @password = @distributorpassword, @working_directory = N'/var/opt/mssql/data/ReplData', @trusted = N'false', @thirdparty_flag = 0, @publisher_type = N'MSSQLSERVER'; GOKonfigurera publiceringsjobb. Kör följande T-SQL-kommandon på utgivaren.
DECLARE @replicationdb AS SYSNAME; DECLARE @publisherlogin AS SYSNAME; DECLARE @publisherpassword AS SYSNAME; SET @replicationdb = N'Sales'; SET @publisherlogin = N'<Publisher login>'; SET @publisherpassword = N'<Publisher Password>'; USE [Sales]; GO EXECUTE sp_replicationdboption @dbname = N'Sales', @optname = N'publish', @value = N'true'; -- Add the snapshot publication EXECUTE sp_addpublication @publication = N'SnapshotRepl', @description = N'Snapshot publication of database ''Sales'' from Publisher ''<PUBLISHER HOSTNAME>''.', @retention = 0, @allow_push = N'true', @repl_freq = N'snapshot', @status = N'active', @independent_agent = N'true'; EXECUTE sp_addpublication_snapshot @publication = N'SnapshotRepl', @frequency_type = 1, @frequency_interval = 1, @frequency_relative_interval = 1, @frequency_recurrence_factor = 0, @frequency_subday = 8, @frequency_subday_interval = 1, @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 = @publisherlogin, @publisher_password = @publisherpassword;Skapa artiklar från tabellen Försäljning.
Kör följande T-SQL-kommandon på utgivaren.
USE [Sales]; GO EXECUTE sp_addarticle @publication = N'SnapshotRepl', @article = N'customer', @source_owner = N'dbo', @source_object = N'customer', @type = N'logbased', @description = NULL, @creation_script = NULL, @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509D, @identityrangemanagementoption = N'manual', @destination_table = N'customer', @destination_owner = N'dbo', @vertical_partition = N'false';Konfigurera prenumeration. Kör följande T-SQL-kommandon på utgivaren.
DECLARE @subscriber AS SYSNAME; DECLARE @subscriber_db AS SYSNAME; DECLARE @subscriberLogin AS SYSNAME; DECLARE @subscriberPassword AS SYSNAME; SET @subscriber = N'<Instance Name>'; -- for example, MSSQLSERVER SET @subscriber_db = N'Sales'; SET @subscriberLogin = N'<Subscriber Login>'; SET @subscriberPassword = N'<Subscriber Password>'; USE [Sales]; GO EXECUTE sp_addsubscription @publication = N'SnapshotRepl', @subscriber = @subscriber, @destination_db = @subscriber_db, @subscription_type = N'Push', @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0; EXECUTE sp_addpushsubscription_agent @publication = N'SnapshotRepl', @subscriber = @subscriber, @subscriber_db = @subscriber_db, @subscriber_security_mode = 0, @subscriber_login = @subscriberLogin, @subscriber_password = @subscriberPassword, @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 = 0, @active_start_date = 0, @active_end_date = 19950101; GOKör jobb för replikeringsagent. Kör följande fråga för att hämta en lista över jobb:
SELECT name, date_modified FROM msdb.dbo.sysjobs ORDER BY date_modified DESC;Kör replikeringsjobbet för ögonblicksbilder för att generera ögonblicksbilden:
USE msdb; GO --generate snapshot of publications, for example EXECUTE dbo.sp_start_job N'PUBLISHER-PUBLICATION-SnapshotRepl-1'; GOKör ögonblicksbildsreplikeringen för att starta jobbet.
USE msdb; GO --distribute the publication to subscriber, for example EXECUTE dbo.sp_start_job N'DISTRIBUTOR-PUBLICATION-SnapshotRepl-SUBSCRIBER'; GOAnslut prenumerant och fråga replikerade data.
Kontrollera att replikeringen fungerar på abonnenten genom att köra följande fråga:
SELECT * FROM [Sales].[dbo].[Customer];
I den här handledningen konfigurerade du SQL Server-ögonblicksbildsreplikering på Linux med två instanser av SQL Server genom att använda T-SQL.
- Aktivera SQL Server-replikeringsagenter i Linux
- Skapa en exempeldatabas
- Konfigurera ögonblicksbildmappen för åtkomst till SQL Server-agenter
- Konfigurera distributören
- Konfigurera utgivaren
- Konfigurera publicering och artiklar
- Konfigurera prenumerant
- Kör replikeringsjobben