Share via


Konfigurieren der Veröffentlichung und der Verteilung

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

Vorbereitungen

Sicherheit

Weitere Informationen finden Sie unter Bereitstellung der sicheren Replikation.

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 Verteiler konfiguriert wurde, können Sie eigenschaften im Dialogfeld Verteilereigenschaften – <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 Studioeine Verbindung mit dem Server her, der als Verteiler fungieren soll, und erweitern Sie den Serverknoten (in vielen Fällen handelt es sich beim Verleger und beim Verteiler um denselben Server).

  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. Um einen lokalen Verteiler zu verwenden, wählen Sie "<ServerName>" aus, um als eigener Verteiler zu fungieren. SQL Server erstellen 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 Aktivieren eines Remoteherausgebers bei einem Verteiler (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 zu ermitteln, ob der Server bereits als Verteiler konfiguriert ist.

    • Wenn der Wert von installiert im Resultset 0 ist, führen Sie sp_adddistributor (Transact-SQL) am Verteiler in der master-Datenbank aus.

    • Wenn der Wert der im Resultset installierten Verteilungsdatenbank0 ist, führen Sie sp_adddistributiondb (Transact-SQL) am Verteiler in der master Datenbank aus. Geben Sie den Namen der Verteilungsdatenbank für @databasean. Optional können Sie die maximale Transaktionsbeibehaltungsdauer für @max_distretention und die Verlaufsbeibehaltungsdauer für @history_retentionangeben. Wenn eine neue Datenbank erstellt wird, geben Sie die gewünschten Eigenschaftenparameter für die Datenbank an.

  2. Führen Sie auf dem Verteiler, der auch der Verleger ist, sp_adddistpublisher (Transact-SQL) aus, und geben Sie die UNC-Freigabe an, die als Standardordner Momentaufnahme für @working_directory verwendet wird.

  3. Führen Sie auf dem Verleger sp_replicationdboption (Transact-SQL) aus. Geben Sie die Datenbank, die für @dbname veröffentlicht wird, den Replikationstyp für @optname und den Wert für true@value an.

So konfigurieren Sie die Veröffentlichung mit einem Remoteverteiler

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

    • Wenn der Wert von installiert im Resultset 0 ist, führen Sie sp_adddistributor (Transact-SQL) am Verteiler in der master-Datenbank aus. Geben Sie ein starkes Kennwort für @passwordan. Dieses Kennwort für das distributor_admin -Konto wird vom Verleger verwendet, wenn er eine Verbindung zum Verteiler herstellt.

    • Wenn der Wert der im Resultset installierten Verteilungsdatenbank0 ist, führen Sie sp_adddistributiondb (Transact-SQL) am Verteiler in der master Datenbank aus. Geben Sie den Namen der Verteilungsdatenbank für @databasean. Optional können Sie die maximale Transaktionsbeibehaltungsdauer für @max_distretention und die Verlaufsbeibehaltungsdauer für @history_retentionangeben. Wenn eine neue Datenbank erstellt wird, geben Sie die gewünschten Eigenschaftenparameter für die Datenbank an.

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

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

  4. Führen Sie auf dem Verleger sp_replicationdboption (Transact-SQL) aus. Geben Sie die zu veröffentlichende Datenbank für @dbname, den Replikationstyp für @optnameund den Wert für @valuean.

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'AdventureWorks2012'; 

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

  8. 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 Kryptografiedienste von Microsoft Windows .NET Framework.

  6. Erstellen Sie eine Instanz der DistributionPublisher-Klasse.

  7. Legen Sie dann die folgenden Eigenschaften von DistributionPublisherfest:

  8. Rufen Sie die Create -Methode auf.

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

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

  11. 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 = "AdventureWorks2012";

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 AdventureWorks2012 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 occured 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 = "AdventureWorks2012"

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 AdventureWorks2012 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 occured 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 AlwaysOn-Verfügbarkeitsgruppen (SQL Server)