sys.sp_articlecolumn (Transact-SQL)

Gäller för:SQL Server

Används för att specificera kolumner som ingår i en artikel för att vertikalt filtrera data i en publicerad tabell. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Transact-SQL syntaxkonventioner

Syntax

sys.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 ]
[ ; ]

Arguments

[ @publication = ] N'publicering'

Namnet på publikationen som innehåller denna artikel. @publication är sysname, utan standard.

[ @article = ] Inte en artikel'

Namnet på artikeln. @article är sysname, utan standard.

[ @column = ] N'column'

Namnet på kolumnen som ska läggas till eller tas bort. @column är sysname, med standardvärdet .NULL Om NULL, publiceras alla kolumner.

[ @operation = ] N'operation'

Specificerar om kolumner ska läggas till eller tas bort i en artikel. @operation är nvarchar(5), med en standard på add.

  • add markerar kolumnen för replikation.
  • drop tar bort kolumnen.

[ @refresh_synctran_procs = ] refresh_synctran_procs

Specificerar om de lagrade procedurerna som stöder omedelbara uppdateringsprenumerationer genereras för att matcha antalet kolumner som replikeras. @refresh_synctran_procs är bit, med en standard på 1. Om 1, regenereras de lagrade procedurerna.

[ @ignore_distributor = ] ignore_distributor

Indikerar om denna lagrade projete körs utan att ansluta till distributören. @ignore_distributor är bit, med en standard på 0.

  • Om 0, måste databasen aktiveras för publicering, och artikelcachen bör uppdateras för att återspegla de nya kolumner som replikeras av artikeln.
  • Om 1, tillåter att artikelkolumner tas bort för artiklar som finns i en opublicerad databas; bör endast användas i återställningssituationer.

[ @change_active = ] change_active

Tillåter att ändra kolumner i publikationer som har prenumerationer. @change_active är int, med standardvärdet .0

  • Om 0, modifieras inte kolumnerna.
  • Om 1, kan kolumner läggas till eller tas bort från aktiva artiklar som har prenumerationer.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Erkänner att åtgärden som utförs av denna lagrade procedur kan ogiltigförklara en befintlig snapshot. @force_invalidate_snapshot är bit, med standardvärdet 0.

  • 0 anger att ändringar i artikeln inte gör att ögonblicksbilden blir ogiltig. Om den lagrade proceduren upptäcker att ändringen kräver en ny snapshot, uppstår ett fel och inga ändringar görs.
  • 1 specificerar att ändringar i artikeln kan göra att snapshoten blir ogiltig, och om det finns befintliga prenumerationer som kräver en ny snapshot, ger den tillåtelse att den befintliga snapshoten markeras som föråldrad och generera en ny snapshot.

[ @force_reinit_subscription = ] force_reinit_subscription

Erkänner att åtgärden som utförs av denna lagrade procedur kan kräva att befintliga prenumerationer initialiseras om. @force_reinit_subscription är lite, med standardvärdet 0.

  • 0 anger att ändringar i artikeln inte gör att prenumerationen initieras på nytt. Om den lagrade proceduren upptäcker att ändringen skulle kräva att prenumerationer initialiseras igen, uppstår ett fel och inga ändringar görs.
  • 1 anger att ändringar i artikeln orsakar att befintliga prenumerationer ominitieras, och ger tillstånd för prenumerationsominitialisering.

[ @publisher = ] N'publisher'

Specificerar en icke-SQL Server Publisher. @publisher är sysname, med standardvärdet .NULL

@publisher ska inte användas med en SQL Server Publisher.

[ @internal = ] intern

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_articlecolumn används vid snapshot-replikering och transaktionell replikation.

Endast en avprenumererad artikel kan filtreras med .sp_articlecolumn

Examples

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

Permissions

Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_articlecolumn.