Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu öğreticide, Transact-SQL (T-SQL) kullanarak iki SQL Server örneğiyle Linux'ta SQL Server anlık görüntü çoğaltmayı yapılandırın. Yayımcı ve dağıtımcı aynı örnektedir ve abone ayrı bir örnektedir.
- Linux'ta SQL Server çoğaltma aracılarını etkinleştirme
- Örnek veritabanı oluşturma
- SQL Server aracıları erişimi için anlık görüntü klasörünü yapılandırma
- Dağıtımcıyı yapılandırma
- Yayımcıyı yapılandırma
- Yayını ve makaleleri yapılandırmak
- Aboneyi yapılandırma
- Çoğaltma işlerini çalıştır
Tüm replikasyon bileşenlerini replikasyon depolanmış prosedürlerle yapılandırabilirsiniz.
Prerequisites
Bu eğitimi tamamlamak için şunlara ihtiyacınız olacak:
Linux üzerinde SQL Server'ın en son sürümüne sahip iki SQL Server örneği
Sqlcmd veya SQL Server Management Studio (SSMS) gibi çoğaltmayı ayarlamak için T-SQL sorguları veren bir araç
Bkz. Linuxüzerinde SQL Server'ı yönetmek için Windows'ta SQL Server Management Studio kullanma .
Note
SQL Server Replikasyonu, SQL Server 2017 (14.x) CU 18 ve sonraki sürümlerinde Linux'ta desteklenmektedir. Daha fazla bilgi için, Linux üzerinde SQL Server için sürüm bilgileri sayfasına bakınız.
Ayrıntılı adımlar
Linux'ta SQL Server çoğaltma aracılarını etkinleştirin. Her iki konak makinesinde de terminalde aşağıdaki komutları çalıştırın.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true sudo systemctl restart mssql-serverÖrnek veritabanını ve tabloyu oluşturun. Yayımcıda, yayımın makaleleri gibi işlev görecek örnek bir veritabanı ve tablo oluşturun.
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); GODiğer SQL Server örneğinde abone, makaleleri almak için veritabanını oluşturur.
CREATE DATABASE Sales; GODağıtıcıda, SQL Server ajanlarının okuma ve yazması için anlık bir klasör oluşturun ve kullanıcıya
mssqlerişim izni verin:sudo mkdir /var/opt/mssql/data/ReplData/ sudo chown mssql /var/opt/mssql/data/ReplData/ sudo chgrp mssql /var/opt/mssql/data/ReplData/Dağıtıcıyı yapılandırın. Bu örnekte yayımcı aynı zamanda dağıtımcıdır. Dağıtım için örneği yapılandırmak amacıyla yayımcıda aşağıdaki komutları çalıştırın.
DECLARE @distributor AS SYSNAME; DECLARE @distributorlogin AS SYSNAME; DECLARE @distributorpassword AS SYSNAME; -- Specify the distributor name. Use the 'hostname' command in the 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 the distributor and create the distribution database. -- In this example, the publisher and distributor are 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 -- Log into the distributor and configure the snapshot directory. -- In this example, the publisher and distributor are on the same host. USE [distribution]; GO DECLARE @snapshotdirectory AS NVARCHAR (500) = N'/var/opt/mssql/data/ReplData/'; 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'; GOYayımcıyı yapılandırın. Yayımcıda aşağıdaki T-SQL komutlarını çalıştırın.
DECLARE @publisher AS SYSNAME; DECLARE @distributorlogin AS SYSNAME; DECLARE @distributorpassword AS SYSNAME; -- Specify the publisher name. Use the 'hostname' command in the 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'; GOYayın ve anlık görüntü aracısı görevini yapılandırın. Yayımcıda aşağıdaki T-SQL komutlarını çalıştırın.
USE [Sales]; GO DECLARE @publisherlogin AS SYSNAME; DECLARE @publisherpassword AS SYSNAME; SET @publisherlogin = N'<publisher login>'; SET @publisherpassword = N'<publisher password>'; 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;CustomermakaleyiCustomertablodan oluşturun.Yayımcıda aşağıdaki T-SQL komutlarını çalıştırı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, @destination_table = N'Customer', @destination_owner = N'dbo', @identityrangemanagementoption = N'manual', @vertical_partition = N'false';Aboneliği yapılandırın. Yayımcıda aşağıdaki T-SQL komutlarını çalıştırın.
USE [Sales]; GO 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>'; 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; GOÇoğaltma aracısı işlerini çalıştırın. İşlerin listesini almak için aşağıdaki sorguyu çalıştırın:
SELECT name, date_modified FROM msdb.dbo.sysjobs ORDER BY date_modified DESC;Anlık görüntüyü oluşturmak için anlık görüntü aracısı görevini başlatın:
USE msdb; GO -- Generate the publication snapshot, for example. EXECUTE dbo.sp_start_job N'PUBLISHER-PUBLICATION-SnapshotRepl-1'; GOYayını aboneye dağıtmak için dağıtım ajanı işini başlatın:
USE msdb; GO -- Distribute the publication to the subscriber. EXECUTE dbo.sp_start_job N'DISTRIBUTOR-PUBLICATION-SnapshotRepl-SUBSCRIBER'; GOAboneye bağlanın ve çoğaltılan verileri sorgulayın.
Abonede, aşağıdaki sorguyu çalıştırarak çoğaltmanın çalışıp çalışmadığını denetleyin:
SELECT * FROM [Sales].[dbo].[Customer];
Bu öğreticide, T-SQL kullanarak iki SQL Server örneğiyle Linux'ta SQL Server anlık görüntü çoğaltmayı yapılandırdınız.
- Linux'ta SQL Server çoğaltma aracılarını etkinleştirme
- Örnek veritabanı oluşturma
- SQL Server aracıları erişimi için anlık görüntü klasörünü yapılandırma
- Dağıtımcıyı yapılandırma
- Yayımcıyı yapılandırma
- Yayını ve makaleleri yapılandırmak
- Aboneyi yapılandırma
- Çoğaltma işlerini çalıştır