Anzeigen und Ändern von Artikeleigenschaften

In diesem Thema wird beschrieben, wie die Artikeleigenschaften in SQL Server 2012 mit SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (RMO) angezeigt und geändert werden.

In diesem Thema

  • Vorbereitungen:

    Einschränkungen

    Empfehlungen

  • So zeigen Sie Artikeleigenschaften an oder ändern sie mit:

    SQL Server Management Studio

    Transact-SQL

    Replikationsverwaltungsobjekte (RMO)

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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

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 <Objekttyp>-Artikels festlegen, um das Dialogfeld Artikeleigenschaften – <Objektname> zu öffnen. In diesem Dialogfeld vorgenommene Eigenschaftenänderungen werden nur auf das Objekt angewendet, das auf der Seite Artikel im Objektbereich hervorgehoben ist.

    • Klicken Sie auf Eigenschaften aller <Objekttyp>-Artikel festlegen, um das Dialogfeld Eigenschaften für alle <Objekttyp>-Artikel zu öffnen. In diesem Dialogfeld vorgenommene Eigenschaftenänderungen werden auf alle Objekte dieses Typs im Objektbereich der Seite Artikel angewendet, einschließlich Objekten, die noch nicht für die Veröffentlichung ausgewählt wurden.

      HinweisHinweis

      Im Dialogfeld Eigenschaften für alle <Objekttyp>-Artikel vorgenommene Eigenschaftenänderungen überschreiben alle Eigenschaftenänderungen, die zuvor im Dialogfeld Artikeleigenschaften – <Objektname> vorgenommen wurden. Wenn Sie beispielsweise eine Reihe von Standardwerten für alle Artikel eines Objekttyps, aber dennoch einige Eigenschaften für einzelne Objekte festlegen möchten, legen Sie zunächst 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.

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Verwendung 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 @publication-Parameter und den Namen des Artikels für den @article-Parameter 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

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

    HinweisHinweis

    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 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 @publication-Parameter und den Namen des Artikels für den @article-Parameter 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

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

    HinweisHinweis

    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 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 [AdventureWorks2012]
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 [AdventureWorks2012]
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 [AdventureWorks2012]
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 [AdventureWorks2012]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

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, PublicationName und 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 false zurü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 CachePropertyChanges angegeben 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, PublicationName und 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 false zurü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 CachePropertyChanges angegeben 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 = "AdventureWorks2012";
            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 = "AdventureWorks2012"
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

Pfeilsymbol, dass mit dem Link "Zurück zum Anfang" verwendet wird[Top]

Siehe auch

Konzepte

Implementieren eines Geschäftslogikhandlers für einen Mergeartikel

Veröffentlichen von Daten und Datenbankobjekten

Ändern von Veröffentlichungs- und Artikeleigenschaften

Konzepte für gespeicherte Systemprozeduren für die Replikation

Erweiterte Konflikterkennung und -lösung bei der Mergereplikation