Konfigurieren der Veröffentlichung und der Verteilung

Gilt für:SQL ServerAzure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie die Veröffentlichung und Verteilung in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replication Management Objects (RMO) konfigurieren.

Vorbereitungen

Sicherheit

Weitere Informationen finden Sie unter Anzeigen und Ändern von Replikationssicherheitseinstellungen.

Verwendung von SQL Server Management Studio

Sie konfigurieren die Verteilung mit dem Assistenten für neue Veröffentlichung oder mit dem Verteilungskonfigurations-Assistenten. Nachdem der Distributor konfiguriert wurde, können Sie eigenschaften im Dialogfeld "Händlereigenschaften - <Verteiler> " anzeigen und ändern. Verwenden Sie den Verteilungskonfigurations-Assistenten, wenn Sie einen Verteiler so konfigurieren möchten, dass die Mitglieder der festen Datenbankrollen db_owner Veröffentlichungen erstellen können, oder wenn Sie einen Remoteverteiler konfigurieren möchten, bei dem es sich nicht um einen Verleger handelt.

So konfigurieren Sie die Verteilung

  1. Stellen Sie in Microsoft SQL Server Management Studio eine Verbindung mit dem Server her, der der Distributor ist (in vielen Fällen sind Publisher und Distributor derselbe Server), und erweitern Sie dann den Serverknoten.

  2. Klicken Sie mit der rechten Maustaste auf den Ordner Replikation , und klicken Sie dann auf Verteilung konfigurieren.

  3. Befolgen Sie die Anweisungen im Verteilungskonfigurations-Assistenten, um folgende Vorgänge auszuführen:

  • Auswählen eines Verteilers. Wählen Sie zum Verwenden eines lokalen Verteilers Servername als seinen eigenen Verteiler verwenden. SQL Server erstellt eine Verteilungsdatenbank und ein Protokoll. Aktivieren Sie zum Verwenden eines Remoteverteilers Folgenden Server als Verteiler verwenden, und wählen Sie dann einen Server aus. Der Server muss bereits als Verteiler konfiguriert sein, und auf dem Verleger muss die Verwendung des Verteilers aktiviert sein. Weitere Informationen finden Sie unter Enable a Remote Publisher at a Distributor (SQL Server Management Studio).

    Wenn Sie einen Remoteverteiler auswählen, müssen Sie auf der Seite Administratorkennwort ein Kennwort für Verbindungen eingeben, die zwischen dem Verleger und dem Verteiler hergestellt werden. Dieses Kennwort muss mit dem Kennwort übereinstimmen, dass bei der Aktivierung des Verlegers auf dem Remoteverteiler angegeben wurde.

  • Geben Sie einen Stammordner der Momentaufnahmen an (für einen lokalen Verteiler). Der Momentaufnahmeordner ist lediglich ein von Ihnen freigegebenes Verzeichnis. Agents, die aus diesem Ordner lesen bzw. in den Ordner schreiben, benötigen ausreichende Zugriffsberechtigungen. Jeder Verleger, der diesen Verteiler verwendet, erstellt einen Unterordner des Stammordners, und jede Veröffentlichung erstellt Unterordner des Verlegerordners, in dem die Momentaufnahmedateien gespeichert werden. Weitere Informationen zum angemessenen Sichern des Ordners finden Sie unter Sichern des Momentaufnahmeordners.

  • Geben Sie die Verteilungsdatenbank (für einen lokalen Verteiler) an. In der Verteilungsdatenbank werden Metadaten und Verlaufsdaten für alle Replikations- und Transaktionstypen für die Transaktionsreplikation gespeichert.

  • Optional können Sie weitere Verleger für die Verwendung des Verteilers aktivieren. Wenn die Verwendung des Verteilers auf anderen Verlegern aktiviert ist, müssen Sie auf der Seite Verteilerkennwort ein Kennwort für Verbindungen eingeben, die zwischen diesen Verlegern und dem Verteiler hergestellt werden.

  • Erstellen Sie optional ein Skript für die Konfigurationseinstellungen. Weitere Informationen finden Sie unter Scripting Replication.

Verwenden von Transact-SQL

Die Replikationsveröffentlichung und -verteilung kann mit gespeicherten Replikationsprozeduren programmgesteuert konfiguriert werden.

So konfigurieren Sie die Veröffentlichung mit einem lokalen Verteiler

  1. Führen Sie sp_get_distributor (Transact-SQL) aus, um festzustellen, ob der Server bereits als Distributor konfiguriert ist.
  • Wenn der Wert installed im Resultset lautet 0, führen Sie sp_adddistributor (Transact-SQL) im Distributor in der Masterdatenbank aus.

  • Wenn der Wert distribution db installed im Resultset lautet 0, führen Sie sp_adddistributiondb (Transact-SQL) im Distributor in der Masterdatenbank aus. Geben Sie den Namen der Verteilungsdatenbank für @database an. Optional können Sie die maximale Transaktionsbeibehaltungsdauer für @max_distretention und die Verlaufsbeibehaltungsdauer für @history_retention angeben. Wenn eine neue Datenbank erstellt wird, geben Sie die gewünschten Eigenschaftenparameter für die Datenbank an.

  1. Führen Sie im Distributor, der auch der Publisher ist, sp_adddistpublisher (Transact-SQL) aus, und geben Sie die UNC-Freigabe an, die als Standardordner Momentaufnahme verwendet @working_directorywird.

    Verwenden Sie ein Azure-Speicherkonto für @working_directory und den Speicherzugriffsschlüssel für @storage_connection_string als Verteiler in SQL Managed Instance.

  2. Führen Sie im Publisher sp_replicationdboption (Transact-SQL) aus. Geben Sie die zu veröffentlichende Datenbank für @dbname, den Replikationstyp für @optname und den Wert true für @value an.

So konfigurieren Sie die Veröffentlichung mit einem Remoteverteiler

  1. Führen Sie sp_get_distributor (Transact-SQL) aus, um festzustellen, ob der Server bereits als Distributor konfiguriert ist.

    • Wenn der Wert installed im Resultset lautet 0, führen Sie sp_adddistributor (Transact-SQL) im Distributor in der Masterdatenbank aus. Geben Sie ein starkes Kennwort für @password an. Dieses Kennwort für das distributor_admin-Konto wird vom Verleger verwendet, wenn er eine Verbindung zum Verteiler herstellt.

    • Wenn der Wert distribution db installed im Resultset lautet 0, führen Sie sp_adddistributiondb (Transact-SQL) im Distributor in der Masterdatenbank aus. Geben Sie den Namen der Verteilungsdatenbank für @database an. Optional können Sie die maximale Transaktionsbeibehaltungsdauer für @max_distretention und die Verlaufsbeibehaltungsdauer für @history_retention angeben. Wenn eine neue Datenbank erstellt wird, geben Sie die gewünschten Eigenschaftenparameter für die Datenbank an.

  2. Führen Sie im Distributor sp_adddistpublisher (Transact-SQL) aus, und geben Sie die UNC-Freigabe an, die als Standardordner @working_directoryMomentaufnahme verwendet wird. Wenn der Distributor sql Server-Authentifizierung beim Herstellen einer Verbindung mit dem Publisher verwendet, müssen Sie auch einen Wert für @security_mode und die Anmeldeinformationen für 0 Microsoft SQL Server angeben.@login@password

    Verwenden Sie ein Azure-Speicherkonto für @working_directory und den Speicherzugriffsschlüssel für @storage_connection_string als Verteiler in SQL Managed Instance.

  3. Führen Sie im Publisher in der Masterdatenbank sp_adddistributor (Transact-SQL) aus. Geben Sie das starke Kennwort an, das in Schritt 1 für @password verwendet wurde. Dieses Kennwort wird vom Verleger verwendet, wenn er eine Verbindung zum Verteiler herstellt.

  4. Führen Sie im Publisher sp_replicationdboption (Transact-SQL) aus. Geben Sie die zu veröffentlichende Datenbank für @dbname, den Replikationstyp für @optname und den Wert „true“ für @value an.

Beispiel (Transact-SQL)

Im folgenden Beispiel wird veranschaulicht, wie die Veröffentlichung und die Verteilung programmgesteuert konfiguriert werden. In diesem Beispiel werden der Name des Servers, der als Verleger konfiguriert wird, und ein lokaler Verteiler mithilfe von Skriptvariablen bereitgestellt. Die Replikationsveröffentlichung und -verteilung kann mit gespeicherten Replikationsprozeduren programmgesteuert konfiguriert werden.

-- 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

Verwenden von Replikationsverwaltungsobjekten (RMO)

So konfigurieren Sie Veröffentlichung und Verteilung auf einem einzelnen Server

  1. Erstellen Sie eine Verbindung mit dem Server, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der ReplicationServer-Klasse. Übergeben Sie ServerConnection von Schritt 1.

  3. Erstellen Sie eine Instanz der DistributionDatabase-Klasse.

  4. Legen Sie die Name -Eigenschaft auf den Datenbanknamen fest, und legen Sie die ConnectionContext -Eigenschaft auf die ServerConnection aus Schritt 1 fest.

  5. Installieren Sie den Verteiler, indem Sie die InstallDistributor -Methode aufrufen. Übergeben Sie das DistributionDatabase -Objekt aus Schritt 3.

  6. Erstellen Sie eine Instanz der DistributionPublisher-Klasse.

  7. Legen Sie dann die folgenden Eigenschaften von DistributionPublisherfest:

  1. Rufen Sie die Create-Methode auf.

So konfigurieren Sie Veröffentlichung und Verteiler mit einem Remoteverteiler

  1. Erstellen Sie mithilfe der ServerConnection -Klasse eine Verbindung zum Remoteverteilerserver.

  2. Erstellen Sie eine Instanz der ReplicationServer-Klasse. Übergeben Sie ServerConnection von Schritt 1.

  3. Erstellen Sie eine Instanz der DistributionDatabase-Klasse.

  4. Legen Sie die Name -Eigenschaft auf den Datenbanknamen fest, und legen Sie die ConnectionContext -Eigenschaft auf die ServerConnection aus dem Schritt 1 fest.

  5. Installieren Sie den Verteiler, indem Sie die InstallDistributor -Methode aufrufen. Geben Sie ein sicheres Kennwort (das vom Verteiler für den Verbindungsaufbau mit dem Remoteverteiler verwendet wird) und das DistributionDatabase -Objekt aus Schritt 3 an. Weitere Informationen finden Sie unter Schützen des Verteilers.

    Wichtig

    Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben. Wenn Sie Anmeldeinformationen speichern müssen, verwenden Sie die kryptografischen Dienste , die vom Microsoft Windows .NET Framework bereitgestellt werden.

  6. Erstellen Sie eine Instanz der DistributionPublisher-Klasse.

  7. Legen Sie dann die folgenden Eigenschaften von DistributionPublisherfest:

  1. Rufen Sie die Create-Methode auf.

  2. Erstellen Sie mithilfe der ServerConnection -Klasse eine Verbindung zum lokalen Verlegerserver.

  3. Erstellen Sie eine Instanz der ReplicationServer-Klasse. Übergeben Sie ServerConnection von Schritt 9.

  4. Rufen Sie die InstallDistributor-Methode auf. Übergeben Sie den Namen des Remoteverteilers und das Kennwort des Remoteverteilers, der in Schritt 5 angegeben wurde.

Wichtig

Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben. Wenn Sie Anmeldeinformationen speichern müssen, verwenden Sie die Kryptografiedienste von Windows .NET Framework.

Beispiel (RMO)

Sie können die Veröffentlichung und Verteilung mithilfe von Replikationsverwaltungsobjekten (ROM) programmgesteuert konfigurieren.

// 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

Weitere Informationen

Anzeigen und Ändern der Verteiler- und Verlegereigenschaften
Replication System Stored Procedures Concepts
Verteilung konfigurieren
Replication Management Objects Concepts
Konfigurieren der Replikation für Always On-Verfügbarkeitsgruppen (SQL Server)