Freigeben über


Anzeigen und Ändern von Veröffentlichungseigenschaften

Gilt für: SQL Server Azure SQL Managed Instance

In diesem Thema erfahren Sie, wie Sie Veröffentlichungseigenschaften in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (RMO) anzeigen und ändern.

In diesem Thema

Vorbereitungen

Einschränkungen

  • Einige Eigenschaften können nicht geändert werden, nachdem eine Veröffentlichung erstellt wurde. Andere Eigenschaften können nicht geändert werden, wenn Abonnements für die Veröffentlichung vorhanden sind. Eigenschaften, die nicht geändert werden können, werden als schreibgeschützt angezeigt.

Empfehlungen

Verwendung von SQL Server Management Studio

Sie können die Eigenschaften von Veröffentlichungen im Dialogfeld Veröffentlichungseigenschaften – <Veröffentlichung> anzeigen und ändern. Dieses Dialogfeld ist in SQL Server Management Studio und im Replikationsmonitor verfügbar. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.

Das Dialogfeld Veröffentlichungseigenschaften – <Veröffentlichung> enthält folgende Seiten:

  • Die Seite Allgemein enthält den Namen und die Beschreibung der Veröffentlichung, den Datenbanknamen, den Typ der Veröffentlichung und die Einstellungen für den Abonnementablauf.

  • Die Seite Artikel entspricht der Seite Artikel des Assistenten für neue Veröffentlichung. Verwenden Sie diese Seite, um Artikel hinzuzufügen und zu löschen und um Eigenschaften sowie die Spaltenfilterung für Artikel zu ändern.

  • Die Seite Zeilen filtern entspricht der Seite Tabellenzeilen filtern des Assistenten für neue Veröffentlichung. Mithilfe dieser Seite können Sie statische Zeilenfilter für sämtliche Veröffentlichungstypen hinzufügen, bearbeiten und löschen sowie parametrisierte Zeilenfilter und Joinfilter für Mergeveröffentlichungen hinzufügen, bearbeiten und löschen.

  • Auf der Seite Momentaufnahme können Sie das Format und den Speicherort der Momentaufnahme angeben und zudem angeben, ob die Momentaufnahme komprimiert werden soll und ob Skripts ausgeführt werden sollen, bevor und nachdem die Momentaufnahme angewendet wird.

  • Die Seite FTP-Momentaufnahme (bei Momentaufnahme- und Transaktionsveröffentlichungen sowie Mergeveröffentlichungen für Verleger, auf denen frühere Versionen als SQL Server 2005 ausgeführt werden) bietet die Möglichkeit anzugeben, ob Abonnenten Momentaufnahmedateien über FTP (File Transfer Protocol) herunterladen können.

  • Auf der Seite FTP-Momentaufnahme und Internet (bei Mergeveröffentlichungen von Verlegern, auf denen SQL Server 2005 oder höher ausgeführt wird) können Sie angeben, ob Abonnenten Momentaufnahmedateien per FTP herunterladen können und ob Abonnenten Abonnements über HTTPS synchronisieren können.

  • Auf der Seite Abonnementoptionen können Sie eine Reihe von Optionen festlegen, die auf alle Abonnements angewendet werden. Die Optionen hängen vom Veröffentlichungstyp ab.

  • Auf der Seite Veröffentlichungszugriffsliste können Sie angeben, welche Anmeldungen und Gruppen auf eine Veröffentlichung zugreifen können.

  • Über die Seite Agentsicherheit können Sie auf die Einstellungen für die Konten zugreifen, unter denen folgende Agents ausgeführt werden. Sie können außerdem Verbindungen mit den Computern in einer Replikationstopologie herstellen: Momentaufnahme-Agent für alle Veröffentlichungen, Protokolllese-Agent für alle Transaktionsveröffentlichungen und Warteschlangenlese-Agent für Transaktionsveröffentlichungen, die Abonnements mit verzögertem Update über eine Warteschlange zulassen.

  • Auf der Seite Datenpartitionen (für Mergeveröffentlichungen von Verlegern, auf denen SQL Server 2005 oder höher ausgeführt wird) können Sie angeben, ob Abonnenten von Veröffentlichungen mit parametrisierten Filtern eine Momentaufnahme anfordern können, wenn diese nicht verfügbar ist. Sie haben zudem die Möglichkeit, Momentaufnahmen für eine oder mehrere Partitionen entweder einmalig oder wiederkehrend gemäß einem Zeitplan zu generieren.

So zeigen Sie Veröffentlichungseigenschaften in Management Studio an und ändern sie

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

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .

  3. Klicken Sie mit der rechten Maustaste auf eine Veröffentlichung, und klicken Sie dann auf Eigenschaften.

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

So zeigen Sie Veröffentlichungseigenschaften im Replikationsmonitor an und ändern sie

  1. Erweitern Sie im linken Bereich des Replikationsmonitors eine Verlegergruppe, und erweitern Sie dann einen Verleger.

  2. Klicken Sie mit der rechten Maustaste auf eine Veröffentlichung, und klicken Sie dann auf Eigenschaften.

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

Verwenden von Transact-SQL

Veröffentlichungen können mithilfe gespeicherter Replikationsprozeduren programmgesteuert geändert und ihre Eigenschaften zurückgegeben werden. Welche gespeicherten Prozeduren Sie verwenden, hängt vom Typ der Veröffentlichung ab.

So zeigen Sie die Eigenschaften einer Momentaufnahme oder einer Transaktionsveröffentlichung an

  1. Führen Sie sp_helppublicationaus, und geben Sie dabei den Namen der Veröffentlichung für den @publication -Parameter an. Wenn Sie diesen Parameter nicht angeben, werden Informationen über alle Veröffentlichungen beim Verleger zurückgegeben.

So ändern Sie die Eigenschaften einer Momentaufnahme oder einer Transaktionsveröffentlichung

  1. Führen Sie sp_changepublicationaus, und geben Sie dabei die zu ändernde Veröffentlichungseigenschaft im @property -Parameter und den neuen Wert dieser Eigenschaft im @value -Parameter an.

    Hinweis

    Wenn die Änderung das Generieren einer neuen Momentaufnahme erfordert, müssen Sie zudem den Wert 1 für @force_invalidate_snapshotangeben, und wenn die Änderung das erneute Initialisieren der Abonnenten erfordert, müssen Sie den Wert 1 für @force_reinit_subscriptionangeben. Weitere Informationen über Eigenschaften, die bei Änderung eine neue Momentaufnahme oder eine erneute Initialisierung erfordern, finden Sie unter Ändern von Veröffentlichungs- und Artikeleigenschaften.

So zeigen Sie die Eigenschaften einer Mergeveröffentlichung an

  1. Führen Sie sp_helpmergepublicationaus, und geben Sie dabei den Namen der Veröffentlichung für den @publication -Parameter an. Wenn Sie diesen Parameter nicht angeben, werden Informationen über alle Veröffentlichungen beim Verleger zurückgegeben.

So ändern Sie die Eigenschaften einer Mergeveröffentlichung

  1. Führen Sie sp_changemergepublicationaus, und geben Sie dabei die zu ändernde Veröffentlichungseigenschaft im @property -Parameter und den neuen Wert dieser Eigenschaft im @value -Parameter an.

    Hinweis

    Wenn die Änderung das Generieren einer neuen Momentaufnahme erfordert, müssen Sie zudem den Wert 1 für @force_invalidate_snapshot angeben, und wenn die Änderung das nochmalige Initialisieren der Abonnenten erfordert, müssen Sie den Wert 1 für @force_reinit_subscription angeben. Weitere Informationen über Eigenschaften, die bei Änderung einer neuen Momentaufnahme oder eine nochmalige Initialisierung erfordern, finden Sie unter Ändern von Veröffentlichungs- und Artikeleigenschaften.

So zeigen Sie die Eigenschaften einer Momentaufnahme an

  1. Führen Sie sp_helppublication_snapshotaus, und geben Sie dabei den Namen der Veröffentlichung für den @publication -Parameter an.

So ändern Sie die Eigenschaften einer Momentaufnahme

  1. Führen Sie sp_changepublication_snapshotaus, und geben Sie dabei eine oder mehrere der neuen Momentaufnahmeeigenschaften für die entsprechenden Momentaufnahmeparameter an.

Beispiele (Transact-SQL)

In diesem Beispiel für Transaktionsreplikation werden die Eigenschaften der Veröffentlichung zurückgegeben.

DECLARE @myTranPub AS sysname
SET @myTranPub = N'AdvWorksProductTran' 

USE [AdventureWorks2022]
EXEC sp_helppublication @publication = @myTranPub
GO

In diesem Beispiel für Transaktionsreplikation wird die Schemareplikation für die Veröffentlichung deaktiviert.

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

In diesem Beispiel für Mergereplikation werden die Eigenschaften der Veröffentlichung zurückgegeben.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2022]
EXEC sp_helpmergepublication @publication = @publication;
GO

In diesem Beispiel für Mergereplikation wird die Schemareplikation für die Veröffentlichung deaktiviert.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

Verwenden von Replikationsverwaltungsobjekten (RMO)

Sie können Veröffentlichungen ändern und mithilfe von Replikationsverwaltungsobjekten (RMO) programmgesteuert auf ihre Eigenschaften zugreifen. Welche RMO-Klassen zum Anzeigen oder Ändern von Veröffentlichungseigenschaften verwendet werden, hängt vom Typ der Veröffentlichung ab.

So zeigen Sie die Eigenschaften einer Momentaufnahme- oder einer Transaktionsveröffentlichung an oder ändern diese

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

  2. Erstellen Sie eine Instanz der TransPublication -Klasse, legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft der Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  4. (Optional) Um Eigenschaften zu ändern, legen Sie einen neuen Wert für eine oder mehrere festlegbaren Eigenschaften fest. Verwenden Sie den logischen AND-Operator (& in Microsoft Visual C# und And in Microsoft Visual Basic), um zu ermitteln, ob ein gegebener PublicationAttributes-Wert für die Attributes-Eigenschaft festgelegt wurde. Verwenden Sie den inklusiven logischen OR-Operator (| in Visual C# and Or in Visual Basic) und den exklusiven logischen OR-Operator (^ in Visual C# and Xor in Visual Basic), um die PublicationAttributes -Werte für die Attributes -Eigenschaft festgelegt wurde.

  5. (Optional) Wenn Sie den Wert true für CachePropertyChangesangegeben haben, rufen Sie die CommitPropertyChanges -Methode auf, um die Änderungen auf dem Server einzutragen. Wenn Sie den Wert false für CachePropertyChanges (die Standardeinstellung) angegeben haben, werden die Änderungen sofort an den Server gesendet.

So zeigen Sie die Eigenschaften einer Mergeveröffentlichung an oder ändern diese

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

  2. Erstellen Sie eine Instanz der MergePublication -Klasse, legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft der Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte Verbindung fest.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  4. (Optional) Um Eigenschaften zu ändern, legen Sie einen neuen Wert für eine oder mehrere festlegbaren Eigenschaften fest. Verwenden Sie den logischen AND-Operator (& in Visual C# und And in Visual Basic), um zu ermitteln, ob ein gegebener PublicationAttributes-Wert für die Attributes-Eigenschaft festgelegt wurde. Verwenden Sie den inklusiven logischen OR-Operator (| in Visual C# and Or in Visual Basic) und den exklusiven logischen OR-Operator (^ in Visual C# and Xor in Visual Basic), um die PublicationAttributes -Werte für die Attributes -Eigenschaft festgelegt wurde.

  5. (Optional) Wenn Sie den Wert true für CachePropertyChangesangegeben haben, rufen Sie die CommitPropertyChanges -Methode auf, um die Änderungen auf dem Server einzutragen. Wenn Sie den Wert false für CachePropertyChanges (die Standardeinstellung) angegeben haben, werden die Änderungen sofort an den Server gesendet.

Beispiele (RMO)

In diesem Beispiel werden Veröffentlichungsattribute einer Transaktionsveröffentlichung festgelegt. Die Änderungen werden zwischengespeichert, bis sie explizit zum Server gesendet werden.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";

TransPublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // Explicitly enable caching of property changes on this object.
    publication.CachePropertyChanges = true;

    // If we can't get the properties for this publication, 
    // throw an application exception.
    if (publication.LoadProperties())
    {
        // Enable support for push subscriptions and disable support 
        // for pull subscriptions.
        if ((publication.Attributes & PublicationAttributes.AllowPull) != 0)
        {
            publication.Attributes ^= PublicationAttributes.AllowPull;
        }
        if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
        {
            publication.Attributes |= PublicationAttributes.AllowPush;
        }

        // Send changes to the server.
        publication.CommitPropertyChanges();
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "The publication property could not be changed.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' Explicitly enable caching of property changes on this object.
    publication.CachePropertyChanges = True

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then
        ' Enable support for push subscriptions and disable support 
        ' for pull subscriptions.
        If (publication.Attributes And PublicationAttributes.AllowPull) <> 0 Then
            publication.Attributes = publication.Attributes _
            Xor PublicationAttributes.AllowPull
        End If
        If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
            publication.Attributes = publication.Attributes _
            Or PublicationAttributes.AllowPush
        End If

        ' Send changes to the server.
        publication.CommitPropertyChanges()
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
        "The publication property could not be changed.", ex)
Finally
    conn.Disconnect()
End Try

In diesem Beispiel wird die DDL-Replikation für eine Mergeveröffentlichung deaktiviert.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";

MergePublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new MergePublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;


    // If we can't get the properties for this merge publication, then throw an application exception.
    if (publication.LoadProperties())
    {
        // If DDL replication is currently enabled, disable it.
        if (publication.ReplicateDdl == DdlReplicationOptions.All)
        {
            publication.ReplicateDdl = DdlReplicationOptions.None;
        }
        else
        {
            publication.ReplicateDdl = DdlReplicationOptions.All;
        }
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "The publication property could not be changed.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' If DDL replication is currently enabled, disable it.
        If publication.ReplicateDdl = DdlReplicationOptions.All Then
            publication.ReplicateDdl = DdlReplicationOptions.None
        Else
            publication.ReplicateDdl = DdlReplicationOptions.All
        End If
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
        "The publication property could not be changed.", ex)
Finally
    conn.Disconnect()
End Try