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: SQL Server Azure SQL Yönetilen Örneği
Bu konu, SQL Server Management Studio, Transact-SQL veya Replikasyon Yönetim Nesneleri (RMO) kullanılarak SQL Server'da yayınlama ve dağıtımın nasıl yapılandırılacağını açıklar.
Security
Daha fazla bilgi için bkz. Çoğaltma güvenlik ayarlarını görüntüleme ve değiştirme.
SQL Server Management Studio'yu kullanma
Dağıtımı Yeni Yayın Büyücüsü veya Dağıtım Yapılandırma Sihirbazı ile yapılandırın. Dağıtıcı konfigure edildikten sonra, Dağıtıcı Özellikleri - <Dağıtıcı> iletişim kutusunda özellikleri görün ve değiştirin. Sabit veritabanı rollerinin db_owner üyelerinin yayınlar oluşturabilmesi için bir Dağıtıcıyı yapılandırmak ya da Yayımcı olmayan bir uzak Dağıtıcıyı yapılandırmak istiyorsanız, Dağıtım Yapılandırma Sihirbazı'nı kullanın.
Dağıtımı yapılandırmak için
Microsoft SQL Server Management Studio'da, Dağıtıcı olacak sunucuya bağlanın (çoğu durumda Publisher ve Distributor aynı sunucudur) ve ardından sunucu düğümünü genişletin.
Replikasyon klasörünü sağ tıklayın ve ardından Dağıtımı Yapılandır'a tıklayın.
Dağıtımı Yapılandırma Sihirbazı'nı izleyerek şunları yapın:
Bir Dağıtıcı Seçin. Yerel bir Dağıtıcı kullanmak için, ServerName seçeneğini seçerek kendi Dağıtıcısı olarak görev yapacaktır; SQL Server bir dağıtım veritabanı ve kayıt oluşturacaktır. Uzak Dağıtıcı kullanmak için, aşağıdaki sunucuyu Dağıtıcı olarak kullan seçeneğini seçin ve ardından bir sunucu seçin. Sunucu zaten Dağıtıcı olarak yapılandırılmış olmalı ve Publisher Distributor'u kullanabilmesi için etkinleştirilmiş olmalıdır. Daha fazla bilgi için, Dağıtıcıda Uzaktan Publisher'ı Etkinleştir (SQL Server Management Studio) bölümüne bakınız.
Uzaktan bir Dağıtıcı seçerseniz, Publisher'dan Distributor'a yapılan bağlantılar için Yönetici Şifre sayfasına bir şifre girmeniz gerekir. Bu şifre, Publisher uzak Dağıtıcıda etkinleştirildiğinde belirtilen şifreyle eşleşmelidir.
Yerel bir Dağıtıcı için kök snapshot klasörü belirtin. Snapshot klasörü, sadece paylaşma olarak belirlediğiniz bir dizindir; Bu klasörden okuyan ve yazan ajanların ona erişmek için yeterli izinlere sahip olması gerekir. Bu Dağıtıcıyı kullanan her Publisher, kök klasörün altında bir klasör oluşturur ve her yayın, anlık fotoğraf dosyalarını depolamak için Publisher klasörü altında klasörler oluşturur. Klasörün güvenliğini uygun şekilde sağlama hakkında daha fazla bilgi için Anlık Görüntü Klasörünü Güvence Altına Alın bölümüne bakın.
Dağıtım veritabanını belirtin (yerel bir Dağıtıcı için). Dağıtım veritabanı, tüm tür replikasyon türleri için meta veri ve geçmiş verilerini ve işlemsel çoğaltma işlemleri için verileri saklar.
Diğer Yayınevlerinin Dağıtıcıyı kullanmasını isteğe bağlı olarak etkinleştirin. Diğer Yayıncılar Dağıtıcıyı kullanabiliyorsa, bu Yayıncılar arasında Dağıtıcıya yapılan bağlantılar için Dağıtıcı Şifresi sayfasına bir şifre girmeniz gerekir.
Isteğe bağlı olarak script yapılandırma ayarları yapabilirsiniz. Daha fazla bilgi için bkz. Betik Replikasyonu.
Transact-SQL Kullanımı
Replikasyon yayımlama ve dağıtımı, replikasyon saklı yordamları kullanılarak program aracılığıyla yapılandırılabilir.
Yerel bir dağıtıcı kullanarak yayıncılığı yapılandırmak için
- Sunucunun zaten Dağıtıcı olarak yapılandırılıp yapılandırılmadığını belirlemek için sp_get_distributor (Transact-SQL) çalıştırın.
Sonuç kümesindeki
0değeriinstalledise ana veritabanındaki Dağıtıcıda sp_adddistributor (Transact-SQL) çalıştırın.Sonuç kümesindeki
0değeridistribution db installedise ana veritabanındaki Dağıtıcıda sp_adddistributiondb (Transact-SQL) çalıştırın.@databaseiçin dağıtım veritabanının adını belirtin. Isteğe bağlı olarak, maksimum@max_distretentionişlem tutma süresini ve geçmiş tutma süresini belirtebilirsiniz@history_retention. Yeni bir veritabanı oluşturuluyorsa, istenen veritabanı özellik parametrelerini belirtin.
Aynı zamanda Yayımcı olan Dağıtıcıda, sp_adddistpublisher (Transact-SQL) komutunu çalıştırın ve
@working_directoryiçin varsayılan anlık görüntü klasörü olarak kullanılacak UNC paylaşımını belirtin.SQL Yönetilen Örneği üzerinde bir dağıtıcı için,
@working_directoryiçin bir Azure depolama hesabını ve@storage_connection_stringiçin depolama erişim anahtarını kullanın.Publisher'da sp_replicationdboption (Transact-SQL) çalıştırın.
@dbnameiçin yayımlanan veritabanını,@optnameiçin çoğaltma türünü vetrueiçin@valuedeğerini belirtin.
Yayıncılığı uzaktan dağıtıcı kullanarak yapılandırmak için
Sunucunun zaten Dağıtıcı olarak yapılandırılıp yapılandırılmadığını belirlemek için sp_get_distributor (Transact-SQL) çalıştırın.
Sonuç kümesindeki
0değeriinstalledise ana veritabanındaki Dağıtıcıda sp_adddistributor (Transact-SQL) çalıştırın.@passwordiçin güçlü bir parola belirleyin. Bu hesapdistributor_adminşifresi, Publisher tarafından Dağıtımcı'ya bağlanırken kullanılacaktır.Sonuç kümesindeki
0değeridistribution db installedise ana veritabanındaki Dağıtıcıda sp_adddistributiondb (Transact-SQL) çalıştırın.@databaseiçin dağıtım veritabanının adını belirtin. Isteğe bağlı olarak, maksimum@max_distretentionişlem tutma süresini ve geçmiş tutma süresini belirtebilirsiniz@history_retention. Yeni bir veritabanı oluşturuluyorsa, istenen veritabanı özellik parametrelerini belirtin.
Dağıtıcı üzerinde, sp_adddistpublisher (Transact-SQL) komutunu çalıştırın ve
@working_directoryiçin varsayılan anlık görüntü klasörü olarak kullanılacak UNC paylaşımını belirtin. Eğer Dağıtıcı, Publisher'a bağlanırken SQL Server Doğrulaması kullanacaksa,0için@security_modedeğerini ve@loginile@passwordiçin Microsoft SQL Server oturum açma bilgilerini de belirtmeniz gerekir.SQL Yönetilen Örneği üzerinde bir dağıtıcı için,
@working_directoryiçin bir Azure depolama hesabını ve@storage_connection_stringiçin depolama erişim anahtarını kullanın.Publisher üzerinde, master veritabanında sp_adddistributor (Transact-SQL) çalıştırın. Adımda 1'de kullanılan güçlü şifreyi belirtin
@password. Bu şifre, Publisher tarafından Dağıtımcıya bağlanırken kullanılır.Publisher'da sp_replicationdboption (Transact-SQL) çalıştırın.
@dbnameiçin yayımlanan veritabanını,@optnameiçin çoğaltma türünü ve@valueiçin true değerini belirtin.
Örnek (Transact-SQL)
Aşağıdaki örnek, yayınlama ve dağıtımı programatik olarak nasıl yapılandırılacağını gösterir. Bu örnekte, yayıncı ve yerel dağıtıcı olarak yapılandırılan sunucunun adı scripting değişkenleri kullanılarak sağlanır. Replikasyon yayımlama ve dağıtımı, replikasyon saklı yordamları kullanılarak program aracılığıyla yapılandırılabilir.
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks2022';
-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;
-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB,
@security_mode = 1;
GO
-- Create a Publisher and enable AdventureWorks2022 for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher,
@distribution_db=@distributionDB,
@security_mode = 1;
GO
Çoğaltma Yönetimi Nesnelerini (RMO) Kullanma
Yayın ve dağıtımı tek bir sunucuda yapılandırmak için
Sınıfı ServerConnection kullanarak sunucuya bağlantı oluşturun.
ReplicationServer sınıfının bir örneğini oluşturun. 1. adımdan ServerConnection'yi geçirin.
DistributionDatabase sınıfının bir örneğini oluşturun.
Name özelliğini veritabanı adı olarak ayarlayın ve ServerConnection özelliğini 1. adımdaki ConnectionContext olarak ayarlayın.
Distribütörü kurmak için yöntemi InstallDistributor çağırın. 3. adımdaki DistributionDatabase nesnesini kullanın.
DistributionPublisher sınıfının bir örneğini oluşturun.
Aşağıdaki özellikleri ayarlayın DistributionPublisher:
Name- Publisher'ın adı.
ConnectionContext - 1. adımdaki ServerConnection.
DistributionDatabase - 5. adımda oluşturulan veritabanının adı.
WorkingDirectory - Snapshot dosyalarına erişmek için kullanılan paylaşım.
PublisherSecurity- Publisher'a bağlanırken kullanılan güvenlik modu. WindowsAuthentication önerilir.
- yöntemini çağırın Create .
Yayın ve dağıtımı uzak bir Dağıtıcı kullanarak yapılandırmak
Sınıfı ServerConnection kullanarak uzak Dağıtıcı sunucusuna bağlantı oluşturun.
ReplicationServer sınıfının bir örneğini oluşturun. 1. adımdan ServerConnection'yi geçirin.
DistributionDatabase sınıfının bir örneğini oluşturun.
Name özelliğini veritabanı adına ayarlayın ve ConnectionContext özelliğini 1. adımdaki ServerConnection olarak ayarlayın.
Distribütörü kurmak için yöntemi InstallDistributor çağırın. Güvenli bir parola (Publisher’ın uzak Dağıtımcıya bağlanırken kullandığı) ve 3. adımdaki DistributionDatabase nesnesini belirtin. Daha fazla bilgi için Dağıtıcıyı Güvence Altına Alın bölümüne bakın.
Important
Mümkün olduğunda, kullanıcılardan çalışma zamanında güvenlik kimlik bilgilerini girmelerini iste. Kimlik bilgilerini depolamanız gerekiyorsa, Microsoft Windows .NET Framework tarafından sağlanan kriptografik hizmetleri kullanın.
DistributionPublisher sınıfının bir örneğini oluşturun.
Aşağıdaki özellikleri ayarlayın DistributionPublisher:
Name- yerel Publisher sunucusunun adı.
ConnectionContext - 1. adımdaki ServerConnection.
DistributionDatabase - 5. adımda oluşturulan veritabanının adı.
WorkingDirectory - Snapshot dosyalarına erişmek için kullanılan paylaşım.
PublisherSecurity- Publisher'a bağlanırken kullanılan güvenlik modu. WindowsAuthentication önerilir.
yöntemini çağırın Create .
Sınıfı ServerConnection kullanarak yerel Publisher sunucusuna bağlantı oluşturun.
ReplicationServer sınıfının bir örneğini oluşturun. 9. adımdaki ServerConnection öğesini geçin.
yöntemini çağırın InstallDistributor . Uzak Dağıtıcının adını ve 5. adımda belirtilen uzak Dağıtıcının şifresini iletin.
Important
Mümkün olduğunda, kullanıcılardan çalışma zamanında güvenlik kimlik bilgilerini girmelerini iste. Kimlik bilgilerini depolamak zorundaysanız, Windows .NET Framework tarafından sağlanan kriptografik hizmetleri kullanın.
Örnek (RMO)
Replikasyon Yönetim Nesneleri (RMO) kullanarak çoğaltma yayınlama ve dağıtımını programatik olarak yapılandırmak mümkündür.
// Set the server and database names
string distributionDbName = "distribution";
string publisherName = publisherInstance;
string publicationDbName = "AdventureWorks2022";
DistributionDatabase distributionDb;
ReplicationServer distributor;
DistributionPublisher publisher;
ReplicationDatabase publicationDb;
// Create a connection to the server using Windows Authentication.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the server acting as the Distributor
// and local Publisher.
conn.Connect();
// Define the distribution database at the Distributor,
// but do not create it now.
distributionDb = new DistributionDatabase(distributionDbName, conn);
distributionDb.MaxDistributionRetention = 96;
distributionDb.HistoryRetention = 120;
// Set the Distributor properties and install the Distributor.
// This also creates the specified distribution database.
distributor = new ReplicationServer(conn);
distributor.InstallDistributor((string)null, distributionDb);
// Set the Publisher properties and install the Publisher.
publisher = new DistributionPublisher(publisherName, conn);
publisher.DistributionDatabase = distributionDb.Name;
publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
publisher.PublisherSecurity.WindowsAuthentication = true;
publisher.Create();
// Enable AdventureWorks2022 as a publication database.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
publicationDb.EnabledTransPublishing = true;
publicationDb.EnabledMergePublishing = true;
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("An error occurred when installing distribution and publishing.", ex);
}
finally
{
conn.Disconnect();
}
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2022"
Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase
' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the server acting as the Distributor
' and local Publisher.
conn.Connect()
' Define the distribution database at the Distributor,
' but do not create it now.
distributionDb = New DistributionDatabase(distributionDbName, conn)
distributionDb.MaxDistributionRetention = 96
distributionDb.HistoryRetention = 120
' Set the Distributor properties and install the Distributor.
' This also creates the specified distribution database.
distributor = New ReplicationServer(conn)
distributor.InstallDistributor((CType(Nothing, String)), distributionDb)
' Set the Publisher properties and install the Publisher.
publisher = New DistributionPublisher(publisherName, conn)
publisher.DistributionDatabase = distributionDb.Name
publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
publisher.PublisherSecurity.WindowsAuthentication = True
publisher.Create()
' Enable AdventureWorks2022 as a publication database.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
publicationDb.EnabledTransPublishing = True
publicationDb.EnabledMergePublishing = True
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("An error occurred when installing distribution and publishing.", ex)
Finally
conn.Disconnect()
End Try