Share via


sp_mergearticlecolumn (Transact-SQL)

Führt eine vertikale Partitionierung einer Mergeveröffentlichung durch. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank ausgeführt.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

sp_mergearticlecolumn [ @publication = ] 'publication' 
        , [ @article = ] 'article'
    [ , [ @column = ] 'column'
    [ , [ @operation = ] 'operation' 
    [ , [ @schema_replication = ] 'schema_replication' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ] 
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ] 

Argumente

  • [ @publication =] 'publication'
    Der Name der Veröffentlichung. Publication ist vom Datentyp sysname und hat keinen Standardwert.

  • [ @article =] 'article'
    Der Name des Artikels in der Veröffentlichung. article ist vom Datentyp sysname und hat keinen Standardwert.

  • [ @column =] 'column'
    Identifiziert die Spalten, für die die vertikale Partition erstellt werden soll. column ist vom Datentyp sysname und hat den Standardwert NULL. Bei den Werten NULL und @operation = N'add' werden dem Artikel standardmäßig alle Spalten in der Quelltabelle hinzugefügt. column darf nicht NULL sein, wenn operation auf drop festgelegt ist. Zum Ausschließen von Spalten aus dem Artikel führen Sie sp_mergearticlecolumn aus, und geben Sie für jede aus dem angegebenen article zu entfernende Spalte column und @operation = N'drop' an.

  • [ @operation =] 'operation'
    Der Replikationsstatus. operation ist vom Datentyp nvarchar(4). Der Standardwert ist ADD. Mit add wird die Spalte für die Replikation markiert. Mit drop wird die Spalte gelöscht.

  • [ @schema_replication=] 'schema_replication'
    Gibt an, dass eine Schemaänderung weitergegeben wird, wenn der Merge-Agent ausgeführt wird. schema_replication ist vom Datentyp nvarchar (5). Der Standardwert ist FALSE.

    HinweisHinweis

    Nur FALSE wird für schema_replication unterstützt.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Aktiviert oder deaktiviert die Möglichkeit, eine Momentaufnahme für ungültig zu erklären. force_invalidate_snapshot ist vom Datentyp bit. Der Standardwert ist 0.

    Der Wert 0 gibt an, dass Änderungen am Mergeartikel nicht die Ungültigkeit der Momentaufnahme bewirken.

    Der Wert 1 gibt an, dass Änderungen am Mergeartikel die Ungültigkeit der Momentaufnahme bewirken können. Wenn dies zutrifft, wird mit dem Wert 1 die Berechtigung für das Auftreten der neuen Momentaufnahme erteilt.

  • [ **@force_reinit_subscription = ]**force_reinit_subscription
    Aktiviert oder deaktiviert die Möglichkeit, das Abonnement erneut zu initialisieren. force_reinit_subscription ist vom Datentyp bit. Der Standardwert ist 0.

    Der Wert 0 gibt an, dass Änderungen am Mergeartikel nicht die erneute Initialisierung des Abonnements bewirken.

    Der Wert 1 gibt an, dass Änderungen am Mergeartikel die erneute Initialisierung des Abonnements bewirken können. Wenn dies zutrifft, wird mit dem Wert 1 die Berechtigung für das erneute Initialisieren des Abonnements erteilt.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_mergearticlecolumn wird bei der Mergereplikation verwendet.

Eine Identitätsspalte kann nicht aus dem Artikel gelöscht werden, wenn die automatische Identitätsbereichsverwaltung verwendet wird. Weitere Informationen finden Sie unter Replizieren von Identitätsspalten.

Wenn eine Anwendung eine neue vertikale Partition festlegt, nachdem die Anfangsmomentaufnahme erstellt wurde, muss eine neue Momentaufnahme generiert und auf jedes Abonnement erneut angewendet werden. Momentaufnahmen werden angewendet, wenn die nächste geplante Momentaufnahme und der Verteilungs- oder Merge-Agent ausgeführt werden.

Falls die Zeilennachverfolgung zur Konflikterkennung verwendet wird (Standardeinstellung), kann die Basistabelle maximal 1.024 Spalten enthalten. Die Spalten müssen jedoch im Artikel gefiltert werden, sodass maximal 246 Spalten veröffentlicht werden. Wenn Spaltennachverfolgung verwendet wird, kann die Basistabelle maximal 246 Spalten enthalten.

Beispiel

DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_object = @table1, 
  @type = N'table', 
  @source_owner = @hrschema,
  @schema_option = 0x0004CF1,
  @description = N'article for the Employee table',
  @subset_filterclause = @filterclause;

-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_object = @table2, 
  @type = N'table', 
  @source_owner = @salesschema, 
  @vertical_partition = N'true',
  @schema_option = 0x0034EF1,
  @description = N'article for the SalesOrderDetail table';

-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table3, 
  @source_object = @table3, 
  @source_owner = @salesschema,
  @description = 'article for the SalesOrderHeader table', 
  @identityrangemanagementoption = N'auto', 
  @pub_identity_range = 100000, 
  @identity_range = 100, 
  @threshold = 80,
  @schema_option = 0x0004EF1;

-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @column = N'CreditCardApprovalCode', 
  @operation = N'drop', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @join_articlename = @table1, 
  @join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @join_articlename = @table2, 
  @join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_mergearticlecolumn ausführen.

Siehe auch

Verweis

Gespeicherte Replikationsprozeduren (Transact-SQL)

Konzepte

Definieren und Ändern eines Verknüpfungsfilters zwischen Mergeartikeln

Definieren und Ändern eines parametrisierten Zeilenfilters für einen Mergeartikel

Filtern von veröffentlichten Daten