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:Azure SQL Yönetilen Örneği
İşlem çoğaltma, SQL Server veya Azure SQL Yönetilen Örneği üzerinde barındırılan bir veritabanındaki verileri başka bir veritabanına çoğaltmanıza olanak tanır. SQL Yönetilen Örneği, çoğaltma topolojisinde yayımcı, dağıtımcı veya abone olabilir. Kullanılabilir yapılandırmalar için bkz. işlem çoğaltma yapılandırmaları.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- SQL yönetilen örneğini çoğaltma yayımcısı ve dağıtımcısı olarak yapılandırın.
- SQL yönetilen örneğini çoğaltma abonesi olarak yapılandırın.
Bu öğretici deneyimli bir hedef kitleye yöneliktir ve kullanıcının hem SQL yönetilen örneklerine hem de Azure içindeki SQL Server VM'lerine dağıtım ve bağlanma konusunda bilgi sahibi olduğunu varsayar.
Not
Bu makalede, Azure SQL Yönetilen Örneği işlem çoğaltması kullanımı açıklanmaktadır. Tek tek örneklerin tam okunabilir çoğaltmalarını oluşturmanıza olanak tanıyan bir Azure SQL Yönetilen Örneği özelliği olan yük devretme gruplarıyla ilgisi yoktur. Yük devretme gruplarıyla işlem çoğaltmasını yapılandırırken dikkat edilmesi gereken başka noktalar da vardır.
Gereksinimler
SQL Yönetilen Örneği yayımcı ve/veya dağıtımcı işlevi görecek şekilde yapılandırmak için şunlar gerekir:
- Yayımcı SQL yönetilen örneği, dağıtımcı ve abone ile aynı sanal ağda yer alır ya da sanal ağ eşlemesi veya VPN ağ geçitleri üç varlığın sanal ağları arasında yapılandırılmıştır.
- Bağlantı, çoğaltma katılımcıları arasında SQL Kimlik Doğrulaması kullanır.
- Çoğaltma çalışma dizini için bir Azure depolama hesabı paylaşımı.
- SQL yönetilen örneklerinin Azure dosya paylaşımına erişmesi için NSG'nin güvenlik kurallarında 445 numaralı bağlantı noktası (TCP giden) açık. hatasıyla
failed to connect to azure storage <storage account name> with os error 53karşılaşırsanız, uygun SQL Yönetilen Örneği alt ağına ait NSG'ye bir giden kuralı eklemeniz gerekir.
1 - Kaynak grubu oluşturma
SQLMI-Repl kullanın.
2 - SQL yönetilen örnekleri oluşturma
Aynı sanal ağ ve alt ağda iki SQL yönetilen örneği oluşturmak için Azure portalını kullanın. Örneğin, iki SQL yönetilen örneğini adlandırın:
-
sql-mi-publisher(rastgele seçim için bazı karakterlerle birlikte) -
sql-mi-subscriber(rastgele seçim için bazı karakterlerle birlikte)
Ayrıca SQL yönetilen örneklerinize bağlanmak için Bir Azure VM yapılandırmanız gerekir.
3 - Azure depolama hesabı oluşturma
Çalışma dizini için bir Azure depolama hesabı oluşturun ve ardından depolama hesabı içinde bir dosya paylaşımı oluşturun.
Dosya paylaşımı yolunu şu biçimde kopyalayın: \\storage-account-name.file.core.windows.net\file-share-name
Örnek: \\replstorage.file.core.windows.net\replshare
Depolama erişim anahtarlarını şu biçimde kopyalayın: DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net
Örnek: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net
Daha fazla bilgi için bkz . Depolama hesabı erişim anahtarlarını yönetme.
4 - Yayımcı veritabanı oluşturma
SQL Server Management Studio kullanarak yayımcı SQL yönetilen örneğine (sql-mi-publisher) bağlanın ve yayımcı veritabanınızı oluşturmak için aşağıdaki Transact-SQL (T-SQL) kodunu çalıştırın:
USE [master]
GO
CREATE DATABASE [ReplTran_PUB]
GO
USE [ReplTran_PUB]
GO
CREATE TABLE ReplTest (
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO
USE [ReplTran_PUB]
GO
INSERT INTO ReplTest (ID, c1) VALUES (6, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (2, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (3, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (4, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (5, 'pub')
GO
SELECT * FROM ReplTest
GO
5 - Abone veritabanı oluşturma
SQL Server Management Studio kullanarak abone sql yönetilen örneğine (sql-mi-subscriber) bağlanın ve boş abone veritabanınızı oluşturmak için aşağıdaki T-SQL kodunu çalıştırın:
USE [master]
GO
CREATE DATABASE [ReplTran_SUB]
GO
USE [ReplTran_SUB]
GO
CREATE TABLE ReplTest (
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO
6 - Dağıtımı yapılandırma
SQL Server Management Studio kullanarak yayımcı SQL yönetilen örneğine (sql-mi-publisher) bağlanın ve dağıtım veritabanınızı yapılandırmak için aşağıdaki T-SQL kodunu çalıştırın.
USE [master]
GO
EXEC sp_adddistributor @distributor = @@ServerName;
EXEC sp_adddistributiondb @database = N'distribution';
GO
7 - Yayımcıyı dağıtımcı kullanacak şekilde yapılandırma
Yayımcı SQL yönetilen örneğinizde (sql-mi-publisher ) sorgu yürütmeyi SQLCMD moduna değiştirin ve yeni dağıtımcıyı yayımcınıza kaydetmek için aşağıdaki kodu çalıştırın.
:setvar username loginUsedToAccessSourceManagedInstance
:setvar password passwordUsedToAccessSourceManagedInstance
:setvar file_storage "\\storage-account-name.file.core.windows.net\file-share-name"
-- example: file_storage "\\replstorage.file.core.windows.net\replshare"
:setvar file_storage_key "DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net"
-- example: file_storage_key "DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net"
USE [master]
EXEC sp_adddistpublisher
@publisher = @@ServerName,
@distribution_db = N'distribution',
@security_mode = 0,
@login = N'$(username)',
@password = N'$(password)',
@working_directory = N'$(file_storage)',
@storage_connection_string = N'$(file_storage_key)'; -- Remove this parameter for on-premises publishers
Not
file_storage parametresi için yalnızca ters eğik çizgi (\) kullandığınızdan emin olun. Eğik çizgi (/) kullanmak, dosya paylaşımına bağlanırken hataya neden olabilir.
Bu betik, SQL yönetilen örneğinde yerel bir yayımcı yapılandırıyor, bağlantılı bir sunucu ekliyor ve SQL Server aracısı için bir iş kümesi oluşturuyor.
8 - Yayın ve abone oluşturma
SQLCMD modunu kullanarak veritabanınızda çoğaltmayı etkinleştirmek ve yayımcınız, dağıtımcınız ve aboneniz arasında çoğaltmayı yapılandırmak için aşağıdaki T-SQL betiğini çalıştırın.
-- Set variables
:setvar username sourceLogin
:setvar password sourcePassword
:setvar source_db ReplTran_PUB
:setvar publication_name PublishData
:setvar object ReplTest
:setvar schema dbo
:setvar target_server "sql-mi-subscriber.wdec33262scj9dr27.database.windows.net"
:setvar target_username targetLogin
:setvar target_password targetPassword
:setvar target_db ReplTran_SUB
-- Enable replication for your source database
USE [$(source_db)]
EXEC sp_replicationdboption
@dbname = N'$(source_db)',
@optname = N'publish',
@value = N'true';
-- Create your publication
EXEC sp_addpublication
@publication = N'$(publication_name)',
@status = N'active';
-- Configure your log reader agent
EXEC sp_changelogreader_agent
@publisher_security_mode = 0,
@publisher_login = N'$(username)',
@publisher_password = N'$(password)',
@job_login = N'$(username)',
@job_password = N'$(password)';
-- Add the publication snapshot
EXEC sp_addpublication_snapshot
@publication = N'$(publication_name)',
@frequency_type = 1,
@publisher_security_mode = 0,
@publisher_login = N'$(username)',
@publisher_password = N'$(password)',
@job_login = N'$(username)',
@job_password = N'$(password)';
-- Add the ReplTest table to the publication
EXEC sp_addarticle
@publication = N'$(publication_name)',
@type = N'logbased',
@article = N'$(object)',
@source_object = N'$(object)',
@source_owner = N'$(schema)';
-- Add the subscriber
EXEC sp_addsubscription
@publication = N'$(publication_name)',
@subscriber = N'$(target_server)',
@destination_db = N'$(target_db)',
@subscription_type = N'Push';
-- Create the push subscription agent
EXEC sp_addpushsubscription_agent
@publication = N'$(publication_name)',
@subscriber = N'$(target_server)',
@subscriber_db = N'$(target_db)',
@subscriber_security_mode = 0,
@subscriber_login = N'$(target_username)',
@subscriber_password = N'$(target_password)',
@job_login = N'$(username)',
@job_password = N'$(password)';
-- Initialize the snapshot
EXEC sp_startpublication_snapshot
@publication = N'$(publication_name)';
9 - Aracı parametrelerini değiştirme
Azure SQL Yönetilen Örneği şu anda çoğaltma aracılarıyla bağlantıda bazı arka uç sorunları yaşıyor. Bu sorun giderilirken geçici çözüm, çoğaltma aracıları için oturum açma zaman aşımı değerini artırmaktır.
Yayımcıda aşağıdaki T-SQL komutunu çalıştırarak oturum açma zaman aşımını artırın:
-- Increase login timeout to 150s
update msdb..sysjobsteps set command = command + N' -LoginTimeout 150'
where subsystem in ('Distribution','LogReader','Snapshot') and command not like '%-LoginTimeout %'
Oturum açma zaman aşımını varsayılan değere geri ayarlamak için gerekirse aşağıdaki T-SQL komutunu yeniden çalıştırın:
-- Increase login timeout to 30
update msdb..sysjobsteps set command = command + N' -LoginTimeout 30'
where subsystem in ('Distribution','LogReader','Snapshot') and command not like '%-LoginTimeout %'
Bu değişiklikleri uygulamak için üç aracıyı da yeniden başlatın.
10 - Çoğaltmayı test et
Çoğaltma yapılandırıldıktan sonra, yayımcıya yeni öğeler ekleyerek ve değişikliklerin aboneye yayılmasını izleyerek bunu test edebilirsiniz.
Abonedeki satırları görüntülemek için aşağıdaki T-SQL kod parçacığını çalıştırın:
select * from dbo.ReplTest
Yayımcıya daha fazla satır eklemek için aşağıdaki T-SQL kod parçacığını çalıştırın ve sonra abonedeki satırları yeniden denetleyin.
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')
Kaynakları temizleme
Yayını bırakmak için aşağıdaki T-SQL komutunu çalıştırın:
-- Drops the publication
USE [ReplTran_PUB]
EXEC sp_droppublication @publication = N'PublishData'
GO
Çoğaltma seçeneğini veritabanından kaldırmak için aşağıdaki T-SQL komutunu çalıştırın:
-- Disables publishing of the database
USE [ReplTran_PUB]
EXEC sp_removedbreplication
GO
Yayımlamayı ve dağıtımı devre dışı bırakmak için aşağıdaki T-SQL komutunu çalıştırın:
-- Drops the distributor
USE [master]
EXEC sp_dropdistributor @no_checks = 1
GO
Kaynak grubundan SQL Yönetilen Örneği kaynaklarını silip kaynak grubunuSQLMI-ReplAzure kaynaklarınızı temizleyebilirsiniz.