sp_articlefilter (T-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Memfilter data yang diterbitkan berdasarkan artikel tabel. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.
Sintaks
sp_articlefilter
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @filter_name = ] N'filter_name' ]
[ , [ @filter_clause = ] N'filter_clause' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argumen
[ @publication = ] N'publikasi'
Nama publikasi yang berisi artikel. @publication adalah sysname, tanpa default.
[ @article = ] N'article'
Nama artikel. @article adalah sysname, tanpa default.
[ @filter_name = ] N'filter_name'
Nama prosedur tersimpan filter yang akan dibuat dari @filter_name. @filter_name adalah nvarchar(517), dengan default NULL
. Anda harus menentukan nama unik untuk filter artikel.
[ @filter_clause = ] N'filter_clause'
Klausa pembatasan (WHERE
) yang menentukan filter horizontal. Saat memasukkan klausul pembatasan, hilangkan kata kunci WHERE
. @filter_clause adalah nvarchar(max), dengan default NULL
.
[ @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 kebutuhan 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.
Mengembalikan nilai kode
0
(berhasil) atau 1
(kegagalan).
Keterangan
sp_articlefilter
digunakan dalam replikasi rekam jepret dan replikasi transaksional.
Menjalankan sp_articlefilter
artikel dengan langganan yang sudah ada mengharuskan langganan tersebut diinisialisasi ulang.
sp_articlefilter
membuat filter, menyisipkan ID prosedur tersimpan filter di filter
kolom tabel sysarticles (Transact-SQL), lalu menyisipkan teks klausa pembatasan di filter_clause
kolom.
Untuk membuat artikel dengan filter horizontal, jalankan sp_addarticle (Transact-SQL) tanpa parameter @filter_name . Jalankan , menyediakan semua parameter termasuk @filter_clause, lalu jalankan sp_articlefilter
sp_articleview (Transact-SQL), menyediakan semua parameter termasuk @filter_clause yang identik. Jika filter sudah ada dan jika type
di sysarticles
adalah 1
(artikel berbasis log), filter sebelumnya dihapus dan filter baru dibuat.
Jika @filter_name dan @filter_clause tidak disediakan, filter sebelumnya akan dihapus dan ID filter diatur ke 0
.
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_articlefilter
.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk