sp_articlecolumn (T-SQL)

Berlaku untuk:SQL Server

Digunakan untuk menentukan kolom yang disertakan dalam artikel untuk memfilter data secara vertikal dalam tabel yang diterbitkan. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

[ @publication = ] N'publikasi'

Nama publikasi yang berisi artikel ini. @publication adalah sysname, tanpa default.

[ @article = ] N'article'

Nama artikel. @article adalah sysname, tanpa default.

[ @column = ] N'column'

Nama kolom yang akan ditambahkan atau dihilangkan. @column adalah sysname, dengan default NULL. Jika NULL, semua kolom diterbitkan.

[ @operation = ] N'operation'

Menentukan apakah akan menambahkan atau meletakkan kolom dalam artikel. @operation adalah nvarchar(5), dengan default add.

  • add menandai kolom untuk replikasi.
  • drop batalkan tanda kolom.

[ @refresh_synctran_procs = ] refresh_synctran_procs

Menentukan apakah prosedur tersimpan yang mendukung pembaruan langganan segera diregenerasi agar sesuai dengan jumlah kolom yang direplikasi. @refresh_synctran_procs adalah bit, dengan default 1. Jika 1, prosedur tersimpan diregenerasi.

[ @ignore_distributor = ] ignore_distributor

Menunjukkan apakah prosedur tersimpan ini dijalankan tanpa menyambungkan ke Distributor. @ignore_distributor adalah bit, dengan default 0.

  • Jika 0, database harus diaktifkan untuk penerbitan, dan cache artikel harus di-refresh untuk mencerminkan kolom baru yang direplikasi oleh artikel.
  • Jika 1, memungkinkan kolom artikel dihilangkan untuk artikel yang berada dalam database yang tidak diterbitkan; harus digunakan hanya dalam situasi pemulihan.

[ @change_active = ] change_active

Memungkinkan memodifikasi kolom dalam publikasi yang memiliki langganan. @change_active int, dengan default 0.

  • Jika 0, kolom tidak dimodifikasi.
  • Jika 1, kolom dapat ditambahkan atau dihilangkan dari artikel aktif yang memiliki langganan.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Mengakui bahwa tindakan yang diambil oleh prosedur tersimpan ini mungkin membatalkan rekam jepret yang ada. @force_invalidate_snapshot adalah bit, dengan default 0.

  • 0 menentukan bahwa perubahan pada artikel tidak menyebabkan rekam jepret tidak valid. Jika prosedur tersimpan mendeteksi bahwa perubahan memang memerlukan rekam jepret baru, kesalahan terjadi dan tidak ada perubahan yang dilakukan.
  • 1 menentukan bahwa perubahan pada artikel dapat menyebabkan rekam jepret tidak valid, dan jika ada langganan yang memerlukan rekam jepret baru, memberikan izin agar rekam jepret yang ada ditandai sebagai usang dan rekam jepret baru yang dihasilkan.

[ @force_reinit_subscription = ] force_reinit_subscription

Mengakui bahwa tindakan yang diambil oleh prosedur tersimpan ini mungkin mengharuskan langganan yang ada untuk diinisialisasi ulang. @force_reinit_subscription adalah bit, dengan default 0.

  • 0 menentukan bahwa perubahan pada artikel tidak menyebabkan langganan diinisialisasi ulang. Jika prosedur tersimpan mendeteksi bahwa perubahan akan mengharuskan langganan diinisialisasi ulang, kesalahan terjadi dan tidak ada perubahan yang dilakukan.
  • 1 menentukan bahwa perubahan pada artikel menyebabkan langganan yang ada diinisialisasi ulang, dan memberikan izin untuk reinitialisasi langganan terjadi.

[ @publisher = ] N'publisher'

Menentukan Penerbit Non-SQL Server. @publisher adalah sysname, dengan default NULL.

@publisher tidak boleh digunakan dengan Penerbit SQL Server.

[ @internal = ] internal

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_articlecolumn digunakan dalam replikasi rekam jepret dan replikasi transaksional.

Hanya artikel yang tidak berlangganan yang dapat difilter menggunakan sp_articlecolumn.

Contoh

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

Izin

Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_articlecolumn.