Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server Linux rendszeren
Ebben az oktatóanyagban konfigurálja az SQL Server pillanatkép-replikációját Linuxon két SQL Server példány használatával Transact-SQL (T-SQL). A közzétevő és a terjesztő ugyanazon a példányon található, és az előfizető egy külön példányon található.
- SQL Server replikációs ügynökök engedélyezése Linuxon
- Mintaadatbázis létrehozása
- Pillanatképmappa konfigurálása SQL Server-ügynökök hozzáféréséhez
- A forgalmazó konfigurálása
- A közzétevő konfigurálása
- Kiadványok és cikkek konfigurálása
- Előfizető konfigurálása
- A replikációs feladatok futtatása
Minden replikációs konfiguráció konfigurálható replikációs tárolt eljárásokkal.
Előfeltételek
Az oktatóanyag elvégzéséhez a következőkre van szüksége:
Két SQL Server példa a Linuxon futó SQL Server legújabb verziójával
T-SQL-lekérdezések kiadására szolgáló eszköz a replikáció beállításához, például sqlcmd vagy SQL Server Management Studio (SSMS)
Jegyzet
Az SQL Server replikációja Linuxon az SQL Server 2017 (14.x) (CU 18) és újabb verzióiban támogatott.
Részletes lépések
SQL Server replikációs ügynökök engedélyezése Linuxon. Mindkét gazda gépen futtassa a következő parancsokat a terminálban.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true sudo systemctl restart mssql-serverHozza létre a mintaadatbázist és a táblát. A közzétevőnél hozzon létre egy mintaadatbázist és egy táblát, amelyek a kiadvány cikkeként fognak szolgálni.
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); GOA másik SQL Server-példányon, az előfizetői példányon hozza létre az adatbázist a cikkek fogadásához.
CREATE DATABASE Sales; GOHozza létre az SQL Server-ügynökök pillanatképmappáját, amellyel a terjesztőn olvashat vagy írhat, létrehozhatja a pillanatképmappát, és hozzáférést biztosíthat a
mssqlfelhasználónak:sudo mkdir /var/opt/mssql/data/ReplData/ sudo chown mssql /var/opt/mssql/data/ReplData/ sudo chgrp mssql /var/opt/mssql/data/ReplData/Konfigurálja a forgalmazót. Ebben a példában a közzétevő is a terjesztő. A következő parancsok futtatásával konfigurálja a kiszolgálót a példány terjesztésére is.
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'; GOKözzétevő konfigurálása. Hajtsa végre a következő T-SQL parancsokat a közzétevőn.
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'; GOA kiadási feladat konfigurálása. Hajtsa végre a következő T-SQL parancsokat a közzétevőn.
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;Hozzon létre cikkeket a Sales táblából.
Hajtsa végre a következő T-SQL parancsokat a közzétevőn.
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';Előfizetés konfigurálása. Hajtsa végre a következő T-SQL parancsokat a közzétevőn.
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; GOReplikációs ügynök feladatainak futtatása. Futtassa a következő lekérdezést a feladatok listájának lekéréséhez:
SELECT name, date_modified FROM msdb.dbo.sysjobs ORDER BY date_modified DESC;Futtassa a Pillanatkép replikációs feladatát a pillanatkép létrehozásához:
USE msdb; GO --generate snapshot of publications, for example EXECUTE dbo.sp_start_job N'PUBLISHER-PUBLICATION-SnapshotRepl-1'; GOFuttassa a pillanatkép-replikációs feladatot a feladat elindításához:
USE msdb; GO --distribute the publication to subscriber, for example EXECUTE dbo.sp_start_job N'DISTRIBUTOR-PUBLICATION-SnapshotRepl-SUBSCRIBER'; GOElőfizető csatlakoztatása és replikált adatok lekérdezése.
Az előfizetőn ellenőrizze, hogy működik-e a replikáció az alábbi lekérdezés futtatásával:
SELECT * FROM [Sales].[dbo].[Customer];
Ebben az oktatóanyagban az SQL Server pillanatképes replikációját konfigurálta Linuxon az SQL Server két példányán T-SQL használatával.
- SQL Server replikációs ügynökök engedélyezése Linuxon
- Mintaadatbázis létrehozása
- Pillanatképmappa konfigurálása SQL Server-ügynökök hozzáféréséhez
- A forgalmazó konfigurálása
- A közzétevő konfigurálása
- Kiadványok és cikkek konfigurálása
- Előfizető konfigurálása
- A replikációs feladatok futtatása