sp_articlecolumn (Transact-SQL)

Wird verwendet, um die in einem Artikel enthaltenen Spalten zum vertikalen Filtern der Daten in einer veröffentlichten Tabelle anzugeben. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_articlecolumn [ @publication = ] 'publication'
        , [ @article = ] 'article'
    [ , [ @column = ] 'column' ]
    [ , [ @operation = ] 'operation' ]
    [ , [ @refresh_synctran_procs = ] refresh_synctran_procs ]
    [ , [ @ignore_distributor = ] ignore_distributor ]
    [ , [ @change_active = ] change_actve ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @internal = ] 'internal' ]

Argumente

  • [ @publication = ] 'publication'
    Der Name der Veröffentlichung, die den Artikel enthält. publication ist vom Datentyp sysname und hat keinen Standardwert.

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

  • [ @column = ] 'column'
    Der Name der Spalte, die hinzugefügt oder gelöscht werden soll. column ist vom Datentyp sysname und hat den Standardwert NULL. Bei NULL werden alle Spalten veröffentlicht.

  • [ @operation = ] **'**operation'
    Gibt an, ob Spalten zu einem Artikel hinzugefügt oder aus ihm gelöscht werden sollen. operation ist vom Datentyp nvarchar(5) und hat den Standardwert add. add markiert die Spalte für die Replikation. drop hebt die Markierung der Spalte auf.

  • [ @refresh_synctran_procs = ] refresh_synctran_procs
    Gibt an, ob die gespeicherten Prozeduren, die sofort aktualisierbare Abonnements unterstützen, neu generiert werden, um an die Zahl der replizierten Spalten angepasst zu werden. refresh_synctran_procs ist vom Datentyp bit und hat den Standardwert 1. Bei 1 werden die gespeicherten Prozeduren neu generiert.

  • [ @ignore_distributor = ] ignore_distributor
    Gibt an, ob diese gespeicherte Prozedur ausgeführt wird, ohne dass eine Verbindung zum Verteiler hergestellt wird. ignore_distributor ist vom Datentyp bit und hat den Standardwert 0. Bei 0 muss die Datenbank für die Veröffentlichung aktiviert sein, und der Artikelcache sollte aktualisiert werden, damit die neuen vom Artikel replizierten Spalten berücksichtigt werden. Bei 1 können Artikelspalten für Artikel, die in einer nicht veröffentlichten Datenbank gespeichert sind, gelöscht werden. Dieser Wert sollte nur bei Wiederherstellungsmaßnahmen verwendet werden.

  • [ @change_active = ] change_active
    Ermöglicht das Ändern von Spalten in Veröffentlichungen, die Abonnements aufweisen. change_active ist vom Datentyp int und hat den Standardwert 0. Bei 0 werden Spalten nicht bearbeitet. Bei 1 können Spalten zu aktiven Artikeln, die Abonnements aufweisen, hinzugefügt oder aus ihnen gelöscht werden.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion einen vorhandenen Snapshot für ungültig erklären kann. force_invalidate_snapshot ist vom Datentyp bit und hat den Standardwert 0.

    Durch 0 wird angegeben, dass der Snapshot nicht durch Änderungen am Artikel ungültig werden kann. Wenn die gespeicherte Prozedur erkennt, dass die Änderung einen neuen Snapshot erfordert, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.

    Der Wert 1 gibt an, dass der Snapshot durch Ändern des Artikels ungültig werden kann. Wenn Abonnements vorhanden sind, die einen neuen Snapshot erfordern, wird mit diesem Wert die Berechtigung erteilt, den vorhandenen Snapshot als veraltet zu markieren und einen neuen Snapshot zu generieren.

  • [@force_reinit_subscription = ] force_reinit_subscription
    Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion die erneute Initialisierung vorhandener Abonnements erfordern kann. force_reinit_subscription ist vom Datentyp bit und hat den Standardwert 0.

    Durch 0 wird angegeben, dass das Abonnement nicht durch Änderungen am Artikel erneut initialisiert werden kann. Wenn die gespeicherte Prozedur erkennt, dass die Änderung die erneute Initialisierung von Abonnements erfordert, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt. Der Wert 1 gibt an, dass Änderungen am Artikel die erneute Initialisierung vorhandener Abonnements bewirken. Außerdem wird mit diesem Wert die Berechtigung zur erneuten Initialisierung des Abonnements erteilt.

  • [ @publisher= ] 'publisher'
    Gibt einen Nicht-Microsoft SQL Server-Verleger an. publisher ist vom Datentyp sysname und hat den Standardwert NULL.

    HinweisHinweis

    publisher sollte nicht mit einem SQL Server-Verleger verwendet werden.

  • [ @internal= ] 'internal'
    Nur interne Verwendung.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_articlecolumn wird bei der Snapshot- und Transaktionsreplikation verwendet.

Mit sp_articlecolumn können nur nicht abonnierte Artikel gefiltert werden.

Beispiel

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
GO

Berechtigungen

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