Anzeigen und Ändern der Verteiler- und Verlegereigenschaften

Gilt für: SQL Server Azure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie Verteiler- und Herausgebereigenschaften in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (RPO) anzeigen und ändern.

In diesem Thema

Vorbereitungen

Empfehlungen

  • Bei Herausgebern, auf denen niedrigere Versionen als Microsoft SQL Server 2005 (9.x) ausgeführt werden, kann ein Benutzer der festen Serverrolle sysadmin auf der Seite Abonnenten Abonnenten registrieren. Ab SQL Server 2005 (9.x) müssen Abonnenten für die Replikation nicht mehr explizit registriert werden.

Sicherheit

Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben.

Verwendung von SQL Server Management Studio

So zeigen Sie die Verteilereigenschaften an oder ändern diese

  1. Stellen Sie mit dem Verteiler in SQL Server Management Studio eine Verbindung her, und erweitern Sie dann den Serverknoten.

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

  3. Sie können die Eigenschaften im Dialogfeld Verteilereigenschaften – <Verteiler> anzeigen und ändern.

    • Um die Eigenschaften einer Verteilungsdatenbank anzuzeigen und zu ändern, klicken Sie auf die Schaltfläche Eigenschaften (...) für die Datenbank auf der Seite Allgemein des Dialogfelds.

    • Um die mit dem Verteiler verbundenen Verlegereigenschaften anzuzeigen und zu ändern, klicken Sie auf der SeiteVerlegerdes Dialogfelds auf die Schaltfläche Eigenschaften ( ... ) des Verlegers.

    • Klicken Sie auf der Seite Allgemein des Dialogfelds auf Profilstandards , um auf die Profile der Replikations-Agents zuzugreifen. Weitere Informationen finden Sie unter Replication Agent Profiles.

    • Um das Kennwort des zum Ausführen von administrativen gespeicherten Prozeduren auf dem Verleger und Aktualisieren von Informationen auf dem Verteiler verwendeten Kontos zu ändern, geben Sie auf der Seite Verleger des Dialogfelds in den Feldern Kennwort und Kennwort bestätigen ein neues Kennwort ein. Weitere Informationen finden Sie unter Schützen des Verteilers.

  4. Ändern Sie die Eigenschaften nach Bedarf, und klicken Sie dann auf OK.

So zeigen Sie die Verlegereigenschaften an oder ändern diese

  1. Stellen Sie mit dem Herausgeber in SQL Server Management Studio eine Verbindung her, und erweitern Sie dann den Serverknoten.

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

  3. Sie können die Eigenschaften im Dialogfeld Herausgebereigenschaften – <Herausgeber> anzeigen und ändern.

    • Ein Benutzer der festen Serverrolle sysadmin kann Datenbanken für die Replikation auf der Seite Veröffentlichungsdatenbanken aktivieren. Durch das Aktivieren wird eine Datenbank nicht veröffentlicht, sondern Benutzer der festen Datenbankrolle db_owner für diese Datenbank können dann eine oder mehrere Veröffentlichungen in der Datenbank erstellen.
  4. Ändern Sie die Eigenschaften nach Bedarf, und klicken Sie dann auf OK.

Verwenden von Transact-SQL

Die Verleger- und Verteilereigenschaften können mit gespeicherten Replikationsprozeduren programmgesteuert angezeigt werden.

So zeigen Sie Verleger- und Verteilerdatenbankeigenschaften an

  1. Führen Sie sp_helpdistributor aus, um Informationen über Verteiler, Verteilungsdatenbank und Arbeitsverzeichnis zurückzugeben.

  2. Führen Sie sp_helpdistributiondb aus, um die Eigenschaften einer angegebenen Verteilungsdatenbank zurückzugeben.

So ändern Sie Verleger- und Verteilerdatenbankeigenschaften

  1. Führen Sie auf dem Verteiler sp_changedistributor_property aus, um Verteilereigenschaften zu ändern.

  2. Führen Sie auf dem Verteiler sp_changedistributiondb aus, um Eigenschaften der Verteilerdatenbank zu ändern.

  3. Führen Sie auf dem Verteiler sp_changedistributor_password aus, um das Verteilerkennwort zu ändern.

    Wichtig

    Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben. Wenn Sie Anmeldeinformationen in einer Skriptdatei speichern müssen, sollten Sie die Datei schützen, um nicht autorisierten Zugriff zu verhindern.

  4. Führen Sie auf dem Verteiler sp_changedistpublisher aus, um mit dem Verteiler die Eigenschaften eines Verlegers zu ändern.

Beispiele (Transact-SQL)

Das folgende Beispiel für ein Transact-SQL-Skript gibt Informationen über den Verteiler und die Verteilungsdatenbank zurück.

-- View information about the Distributor, distribution database, 
-- working directory, and SQL Server Agent user account. 
USE master
EXEC sp_helpdistributor;
GO
-- View information about the specified distribution database. 
USE distribution
EXEC sp_helpdistributiondb;
GO

Im folgenden Beispiel werden die Beibehaltungsdauer für den Verteiler, das Kennwort für den Verbindungsaufbau zum Verteiler und das Intervall geändert, in dem der Verteiler den Status verschiedener Replikations-Agents überprüft (auch Taktintervall genannt).

Wichtig

Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben. Wenn Sie Anmeldeinformationen in einer Skriptdatei speichern müssen, sollten Sie die Datei schützen, um nicht autorisierten Zugriff zu verhindern.


-- Change the heartbeat interval at the Distributor to 5 minutes. 
USE master 
exec sp_changedistributor_property 
    @property = N'heartbeat_interval', 
    @value = 5;
GO
DECLARE @distributionDB AS sysname;
SET @distributionDB = N'distribution';

-- Change the history retention period to 24 hours and the
-- maximum retention period to 48 hours.  
USE distribution
EXEC sp_changedistributiondb @distributionDB, N'history_retention', 24
EXEC sp_changedistributiondb @distributionDB, N'max_distretention', 48
GO
-- Change the password on the Distributor. 
-- To avoid storing the password in the script file, the value is passed 
-- into SQLCMD as a scripting variable. 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".
USE master
EXEC sp_changedistributor_password $(Password)
GO

Verwenden von Replikationsverwaltungsobjekten (RMO)

So zeigen Sie die Verteilereigenschaften an oder ändern diese

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

  2. Erstellen Sie eine Instanz der ReplicationServer-Klasse. Übergeben Sie das ServerConnection -Objekt aus Schritt 1.

  3. (Optional) überprüfen Sie die IsDistributor -Eigenschaft, um sich davon zu überzeugen, dass der aktuell verbundene Server ein Verteiler ist.

  4. Rufen Sie die Load -Methode auf, um die Eigenschaften vom Server abzurufen.

  5. (Optional) Zum Ändern der Eigenschaften legen Sie einen neuen Wert für eine oder mehrere der Verteilereigenschaften fest, die im ReplicationServer -Objekt festgelegt werden können.

  6. (Optional) Wenn die CachePropertyChanges -Eigenschaft des ReplicationServer -Objekts auf truefestgelegt ist, rufen Sie die CommitPropertyChanges -Methode auf, um Änderungen auf dem Server einzutragen.

So zeigen Sie Verteilerdatenbankeigenschaften an oder ändern Sie diese Eigenschaften

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

  2. Erstellen Sie eine Instanz der DistributionDatabase-Klasse. Geben Sie die Namenseigenschaft an, und übergeben Sie das ServerConnection -Objekt aus Schritt 1.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften vom Server abzurufen. Wenn diese Methode falsezurückgibt, ist die Datenbank mit dem angegebenen Namen nicht auf dem Server vorhanden.

  4. (Optional) Um Eigenschaften zu ändern, legen Sie einen neuen Wert für eine der definierbaren DistributionDatabase -Eigenschaften fest.

  5. (Optional) Wenn die CachePropertyChanges -Eigenschaft des DistributionDatabase -Objekts auf truefestgelegt ist, rufen Sie die CommitPropertyChanges -Methode auf, um Änderungen auf dem Server einzutragen.

So zeigen Sie die Verlegereigenschaften an oder ändern diese

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

  2. Erstellen Sie eine Instanz der DistributionPublisher-Klasse. Geben Sie die Name -Eigenschaft an, und übergeben Sie das ServerConnection -Objekt aus Schritt 1.

  3. (Optional) Um Eigenschaften zu ändern, legen Sie einen neuen Wert für eine der definierbaren DistributionPublisher -Eigenschaften fest.

  4. (Optional) Wenn die CachePropertyChanges -Eigenschaft des DistributionPublisher -Objekts auf truefestgelegt ist, rufen Sie die CommitPropertyChanges -Methode auf, um Änderungen auf dem Server einzutragen.

So ändern Sie das Kennwort für die Verwaltungsverbindung zwischen dem Verleger und dem Verteiler

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

  2. Erstellen Sie eine Instanz der ReplicationServer-Klasse.

  3. Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  4. Rufen Sie die Load -Methode auf, um die Eigenschaften des Objekts abzurufen.

  5. Rufen Sie die ChangeDistributorPassword-Methode auf. Übergeben Sie den neuen Kennwortwert für den password -Parameter.

    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. (Optional) Führen Sie die folgenden Schritte aus, um das Kennwort bei jedem Remoteverleger zu ändern, der diesen Verteiler verwendet:

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

    2. Erstellen Sie eine Instanz der ReplicationServer-Klasse.

    3. Legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 6a erstellte Verbindung fest.

    4. Rufen Sie die Load -Methode auf, um die Eigenschaften des Objekts abzurufen.

    5. Rufen Sie die ChangeDistributorPassword-Methode auf. Übergeben Sie den neuen Kennwortwert aus Schritt 5 für den password -Parameter.

Beispiel (RMO)

In diesem Beispiel wird gezeigt, wie Verteilungs- und Verteilungsdatenbankeigenschaften geändert werden.

Wichtig

Um die Speicherung von Anmeldeinformationen im Code vermeiden, wird das neue Verteilerkennwort zur Laufzeit angegeben.

// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;

ReplicationServer distributor;
DistributionDatabase distributionDb;

// Create a connection to the Distributor using Windows Authentication.
ServerConnection conn = new ServerConnection(distributorName);

try
{
    // Open the connection. 
    conn.Connect();

    distributor = new ReplicationServer(conn);

    // Load Distributor properties, if it is installed.
    if (distributor.LoadProperties())
    {
        // Password supplied at runtime.
        distributor.ChangeDistributorPassword(password);
        distributor.AgentCheckupInterval = 5;

        // Save changes to the Distributor properties.
        distributor.CommitPropertyChanges();
    }
    else
    {
        throw new ApplicationException(
            String.Format("{0} is not a Distributor.", publisherInstance));
    }

    // Create an object for the distribution database 
    // using the open Distributor connection.
    distributionDb = new DistributionDatabase(distributionDbName, conn);

    // Change distribution database properties.
    if (distributionDb.LoadProperties())
    {
        // Change maximum retention period to 48 hours and history retention 
        // period to 24 hours.
        distributionDb.MaxDistributionRetention = 48;
        distributionDb.HistoryRetention = 24;

        // Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges();
    }
    else
    {
        // Do something here if the distribution database does not exist.
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here. 
    throw new ApplicationException("An error occurred when changing Distributor " +
        " or distribution database properties.", ex);
}
finally
{
    conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance

Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase

' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(distributorName)

Try
    ' Open the connection. 
    conn.Connect()

    distributor = New ReplicationServer(conn)

    ' Load Distributor properties, if it is installed.
    If distributor.LoadProperties() Then
        ' Password supplied at runtime.
        distributor.ChangeDistributorPassword(password)
        distributor.AgentCheckupInterval = 5

        ' Save changes to the Distributor properties.
        distributor.CommitPropertyChanges()
    Else
        Throw New ApplicationException( _
            String.Format("{0} is not a Distributor.", publisherInstance))
    End If

    ' Create an object for the distribution database 
    ' using the open Distributor connection.
    distributionDb = New DistributionDatabase(distributionDbName, conn)

    ' Change distribution database properties.
    If distributionDb.LoadProperties() Then
        ' Change maximum retention period to 48 hours and history retention 
        ' period to 24 hours.
        distributionDb.MaxDistributionRetention = 48
        distributionDb.HistoryRetention = 24

        ' Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges()
    Else
        ' Do something here if the distribution database does not exist.
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException("An error occurred when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try