sp_articlecolumn (Transact-SQL)

Gilt für: SQL Server

Wird verwendet, um die in einem Artikel enthaltenen Spalten zum vertikalen Filtern der Daten in einer veröffentlichten Tabelle anzugeben. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @publication = ] N'Publikation'

Der Name der Publikation, die diesen Artikel enthält. @publication ist "sysname" ohne Standard.

[ @article = ] N'article'

Der Name des Artikels. @article ist "sysname" ohne Standard.

[ @column = ] N'column'

Der Name der Hinzuzufügenden oder Verworfenen Spalte. @column ist "sysname" mit einem Standardwert von NULL. Wenn NULL, werden alle Spalten veröffentlicht.

[ @operation = ] N'operation'

Gibt an, ob Spalten in einem Artikel hinzugefügt oder gelöscht werden sollen. @operation ist nvarchar(5) mit einem Standardwert von 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 Abonnements mit sofortigem Update unterstützen, entsprechend der Anzahl replizierter Spalten erneut generiert werden. @refresh_synctran_procs ist bit, mit einem Standardwert von 1. Wenn 1die gespeicherten Prozeduren neu generiert werden.

[ @ignore_distributor = ] ignore_distributor

Gibt an, ob diese gespeicherte Prozedur ausgeführt wird, ohne eine Verbindung mit dem Distributor herzustellen. @ignore_distributor ist bit, mit einem Standardwert von 0.

  • Wenn 0die Datenbank für die Veröffentlichung aktiviert sein muss, und der Artikelcache sollte aktualisiert werden, um die neuen Spalten widerzuspiegeln, die vom Artikel repliziert wurden.
  • Wenn 1, lässt, dass Artikelspalten für Artikel gelöscht werden, die sich in einer nicht veröffentlichten Datenbank befinden; sollte nur in Wiederherstellungssituationen verwendet werden.

[ @change_active = ] change_active

Ermöglicht das Ändern der Spalten in Veröffentlichungen, für die Abonnements vorhanden sind. @change_active ist int mit einem Standardwert von 0.

  • Wenn 0, spalten werden nicht geändert.
  • Wenn 1, können Spalten aus aktiven Artikeln hinzugefügt oder gelöscht werden, die Über Abonnements verfügen.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig macht. @force_invalidate_snapshot ist bit, mit einem Standardwert von 0.

  • 0 Gibt an, dass Änderungen am Artikel nicht dazu führen, dass die Momentaufnahme ungültig ist. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.
  • 1 Gibt an, dass Änderungen am Artikel dazu führen können, dass die Momentaufnahme ungültig ist. Wenn vorhandene Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern würden, erteilen Sie die Berechtigung, dass die vorhandene Momentaufnahme als veraltet markiert und eine neue Momentaufnahme generiert wird.

[ @force_reinit_subscription = ] force_reinit_subscription

Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise das erneute Initialisieren von vorhandenen Abonnements erfordert. @force_reinit_subscription ist bit, mit einem Standardwert von 0.

  • 0 Gibt an, dass Änderungen am Artikel nicht dazu führen, dass das Abonnement erneut initialisiert wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderung abonnements erneut initialisiert werden muss, tritt ein Fehler auf, und es werden keine Änderungen vorgenommen.
  • 1 Gibt an, dass Änderungen am Artikel dazu führen, dass vorhandene Abonnements erneut initialisiert werden, und erteilt die Berechtigung für die Erneute Initialisierung des Abonnements.

[ @publisher = ] N'publisher'

Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL.

@publisher sollte nicht mit einem SQL Server-Publisher verwendet werden.

[ @internal = ] intern

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_articlecolumn wird in der Momentaufnahmereplikation und Transaktionsreplikation verwendet.

Es kann nur ein abonnementierter Artikel mithilfe sp_articlecolumnvon Filtern gefiltert werden.

Beispiele

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 db_owner feste Datenbankrolle können ausgeführt werden sp_articlecolumn.