Freigeben über


Anzeigen und Ändern von Artikeleigenschaften

Gilt für: SQL Server Azure SQL Managed Instance

In diesem Thema wird beschrieben, wie Sie Artikeleigenschaften in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (RPO) 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 Artikeln im Dialogfeld Veröffentlichungseigenschaften – <Veröffentlichung> anzeigen und ändern. Dieses Dialogfeld ist in Microsoft SQL Server Management Studio und im Replikationsmonitor verfügbar. Informationen zum Starten des Replikationsmonitors finden Sie unter Starten des Replikationsmonitors.

  • 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 Artikeleigenschaften an oder ändern sie

  1. Wählen Sie auf der Seite Artikel bzw. im Dialogfeld Veröffentlichungseigenschaften – <Veröffentlichung> einen Artikel aus, und klicken Sie dann auf Artikeleigenschaften.

  2. Wählen Sie aus, auf welche Artikel die Eigenschaftsänderungen angewendet werden sollen:

    • Klicken Sie auf Eigenschaften des hervorgehobenen <ObjectType>-Artikels festlegen, um das Dialogfeld Artikeleigenschaften – <ObjectName> zu starten. Die in diesem Dialogfeld vorgenommenen Änderungen werden nur auf das Objekt angewendet, das im Objektbereich auf der Seite Artikel markiert ist.

    • Klicken Sie auf Eigenschaften aller <ObjectType>-Artikel festlegen, um das Dialogfeld Eigenschaften für alle <ObjectType>-Artikel zu starten. Die in diesem Dialogfeld vorgenommenen Änderungen werden auf alle Objekte dieses Typs angewendet, die im Objektbereich auf der Seite Artikel vorhanden sind, einschließlich jener Objekte, die noch nicht für die Veröffentlichung ausgewählt wurden.

      Hinweis

      Durch die Änderungen im Dialogfeld Eigenschaften für alle <ObjectType>-Artikel werden alle zuvor im Dialogfeld Artikeleigenschaften – <ObjectName> vorgenommenen Änderungen überschrieben. Wenn Sie beispielsweise sowohl mehrere Standardwerte für alle Artikel eines Objekttyps als auch bestimmte Eigenschaften für einzelne Objekte festlegen möchten, legen Sie zuerst die Standardwerte für alle Artikel fest. Legen Sie anschließend die Eigenschaften für die einzelnen Objekte fest.

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

  4. Klicken Sie im Dialogfeld Veröffentlichungseigenschaften – <Veröffentlichung> auf OK.

Verwenden von Transact-SQL

Artikel können mithilfe gespeicherter Replikationsprozeduren programmgesteuert geändert und ihre Eigenschaften zurückgegeben werden. Die verwendeten gespeicherten Prozeduren hängen vom Typ der Veröffentlichung ab, zu der der Artikel gehört.

So zeigen Sie die Eigenschaften eines Artikels an, der zu einer Momentaufnahme- oder einer Transaktionsveröffentlichung gehört

  1. Führen Sie sp_helparticle aus, und geben Sie dabei den Namen der Veröffentlichung für den Parameter @publication und den Namen des Artikels für den Parameter @article an. Wenn Sie @article nicht angeben, werden Informationen zu allen Artikeln in der Veröffentlichung zurückgegeben.

  2. Führen Sie sp_helparticlecolumns aus, damit die Tabellenartikel alle in der Basistabelle verfügbaren Spalten auflisten.

So ändern Sie die Eigenschaften eines Artikels, der zu einer Momentaufnahme- oder einer Transaktionsveröffentlichung gehört

  1. Führen Sie sp_changearticle aus, und geben Sie dabei die zu ändernde Artikeleigenschaft für den Parameter @property und den neuen Wert dieser Eigenschaft für den Parameter @value an.

    Hinweis

    Wenn die Änderung das Generieren einer neuen Momentaufnahme erfordert, müssen Sie zudem den Wert 1 für @force_invalidate_snapshot angeben. Wenn die Änderung das erneute Initialisieren der Abonnenten erfordert, müssen Sie auch den Wert 1 für @force_reinit_subscription angeben. 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 eines Artikels an, der zu einer Mergeveröffentlichung gehört

  1. Führen Sie sp_helpmergearticle aus, und geben Sie dabei den Namen der Veröffentlichung für den Parameter @publication und den Namen des Artikels für den Parameter @article an. Wenn Sie diese Parameter nicht angeben, werden Informationen zu allen Artikeln einer Veröffentlichung oder des Verlegers zurückgegeben.

  2. Führen Sie sp_helpmergearticlecolumn aus, damit die Tabellenartikel alle in der Basistabelle verfügbaren Spalten auflisten.

So ändern Sie die Eigenschaften eines Artikels, der zu einer Mergeveröffentlichung gehört

  1. Führen Sie sp_changemergearticle aus, und geben Sie dabei die zu ändernde Artikeleigenschaft für den Parameter @property und den neuen Wert dieser Eigenschaft für den Parameter @value an.

    Hinweis

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

Beispiel (Transact-SQL)

In diesem Beispiel für eine Transaktionsreplikation werden die Eigenschaften des veröffentlichten Artikels zurückgegeben.

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

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

In diesem Beispiel für eine Transaktionsreplikation werden die Schemaoptionen für den veröffentlichten Artikel geändert.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));

-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

In diesem Beispiel für eine Mergereplikation werden die Eigenschaften des veröffentlichten Artikels zurückgegeben.

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

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

In diesem Mergereplikationsbeispiel werden die Konflikterkennungseinstellungen für einen veröffentlichten Artikel geändert.

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

-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Verwenden von Replikationsverwaltungsobjekten (RMO)

Sie können Artikel ändern und mithilfe von Replikationsverwaltungsobjekten (RMO) programmgesteuert auf ihre Eigenschaften zugreifen. Welche RMO-Klassen Sie zum Anzeigen oder Ändern von Artikeleigenschaften verwenden, hängt vom Typ der Veröffentlichung ab, zu der der Artikel gehört.

So zeigen Sie die Eigenschaften eines Artikels an, der zu einer Momentaufnahme- oder einer Transaktionsveröffentlichung gehört, oder ändern sie

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

  2. Erstellen Sie eine Instanz der TransArticle-Klasse.

  3. Legen Sie die Eigenschaften Name, PublicationNameund DatabaseName fest.

  4. Legen Sie die Verbindung aus Schritt 1 für die ConnectionContext -Eigenschaft fest.

  5. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, wurden entweder die Artikeleigenschaften in Schritt 3 falsch definiert, oder der Artikel ist nicht vorhanden.

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

  7. (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 eines Artikels an, der zu einer Mergeveröffentlichung gehört, oder ändern sie

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

  2. Erstellen Sie eine Instanz der MergeArticle-Klasse.

  3. Legen Sie die Eigenschaften Name, PublicationNameund DatabaseName fest.

  4. Legen Sie die Verbindung aus Schritt 1 für die ConnectionContext -Eigenschaft fest.

  5. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, wurden entweder die Artikeleigenschaften in Schritt 3 falsch definiert, oder der Artikel ist nicht vorhanden.

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

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

Beispiel (RMO)

In diesem Beispiel wird ein Mergeartikel geändert, um den vom Artikel verwendeten Geschäftslogikhandler anzugeben.

// Define the Publisher, publication, and article names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string articleName = "SalesOrderHeader";

// Set the friendly name of the business logic handler.
string customLogic = "OrderEntryLogic";

MergeArticle article = new MergeArticle();

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

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

    // Set the required properties for the article.
    article.ConnectionContext = conn;
    article.Name = articleName;
    article.DatabaseName = publicationDbName;
    article.PublicationName = publicationName;

    // Load the article properties.
    if (article.LoadProperties())
    {
        article.ArticleResolver = customLogic;
    }
    else
    {
        // Throw an exception of the article does not exist.
        throw new ApplicationException(String.Format(
        "{0} is not published in {1}", articleName, publicationName));
    }
    
}
catch (Exception ex)
{
    // Do error handling here and rollback the transaction.
    throw new ApplicationException(String.Format(
        "The business logic handler {0} could not be associated with " +
        " the {1} article.",customLogic,articleName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim articleName As String = "SalesOrderHeader"

' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"

Dim article As MergeArticle = New MergeArticle()

' 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 article.
    article.ConnectionContext = conn
    article.Name = articleName
    article.DatabaseName = publicationDbName
    article.PublicationName = publicationName

    ' Load the article properties.
    If article.LoadProperties() Then
        article.ArticleResolver = customLogic
    Else
        ' Throw an exception of the article does not exist.
        Throw New ApplicationException(String.Format( _
         "{0} is not published in {1}", articleName, publicationName))
    End If

Catch ex As Exception
    ' Do error handling here and rollback the transaction.
    Throw New ApplicationException(String.Format( _
     "The business logic handler {0} could not be associated with " + _
     " the {1} article.", customLogic, articleName), ex)
Finally
    conn.Disconnect()
End Try