적용 대상: SQL Server
Azure SQL Managed Instance
테이블이 세로 또는 가로로 필터링될 때 게시된 아티클을 정의하는 뷰를 만듭니다. 이 뷰는 대상 테이블에 대한 스키마 및 데이터의 필터링된 원본으로 사용됩니다. 이 저장 프로시저로는 구독되지 않은 아티클만 수정할 수 있습니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_articleview
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @view_name = ] N'view_name' ]
[ , [ @filter_clause = ] N'filter_clause' ]
[ , [ @change_active = ] change_active ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @refreshsynctranprocs = ] refreshsynctranprocs ]
[ , [ @internal = ] internal ]
[ ; ]
인수
[ @publication = ] N'publication'
아티클을 포함하는 게시의 이름입니다. @publication 기본값이 없는 sysname입니다.
[ @article = ] N'article'
아티클의 이름입니다. @article 기본값이 없는 sysname입니다.
[ @view_name = ] N'view_name'
게시된 아티클을 정의하는 뷰의 이름입니다. @view_name 기본값NULL인 nvarchar(386)입니다.
[ @filter_clause = ] N'filter_clause'
가로 필터를 정의하는 restriction(WHERE) 절입니다. 제한 절을 입력할 때 키워드를 생략합니다 WHERE . @filter_clause 기본값NULL인 nvarchar(max)입니다.
[ @change_active = ] change_active
구독이 있는 게시의 열을 수정할 수 있습니다. @change_active 기본값0인 int입니다.
- 이 경우
0열이 변경되지 않습니다. - 이 경우
1구독이 있는 활성 아티클에서 뷰를 만들거나 다시 만들 수 있습니다.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
이 저장 프로시저에서 수행한 작업이 기존 스냅샷을 무효화할 수 있음을 인정합니다. @force_invalidate_snapshot 비트이며 기본값은 .입니다0.
0는 아티클을 변경해도 스냅샷이 잘못되지 않도록 지정합니다. 저장 프로시저에서 변경에 새 스냅샷이 필요하다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.1는 아티클을 변경하면 스냅샷이 유효하지 않을 수 있으며, 새 스냅샷이 필요한 기존 구독이 있는 경우 기존 스냅샷을 사용되지 않는 것으로 표시하고 생성된 새 스냅샷에 대한 권한을 부여합니다.
[ @force_reinit_subscription = ] force_reinit_subscription
이 저장 프로시저에서 수행한 작업에 기존 구독을 다시 초기화해야 할 수 있음을 인정합니다. @force_reinit_subscription 비트이며 기본값은 .입니다0.
0는 아티클을 변경해도 구독이 다시 초기화되지 않도록 지정합니다. 저장 프로시저에서 변경 내용이 구독을 다시 초기화해야 한다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.1은 아티클을 변경하면 기존 구독이 다시 초기화되도록 지정하고 구독 다시 초기화에 대한 권한을 부여합니다.
[ @publisher = ] N'publisher'
SQL Server가 아닌 게시자를 지정합니다. @publisher sysname이며 기본값은 .입니다NULL.
@PUBLISHER SQL Server 게시자에서 게시할 때 사용하면 안 됩니다.
[ @refreshsynctranprocs = ] refreshsynctranprocs
복제를 동기화하는 데 사용되는 저장 프로시저가 자동으로 다시 만들어지는지 여부를 지정합니다. @refreshsynctranprocs 비트이며 기본값은 .입니다1.
1는 저장 프로시저가 다시 생성됨을 의미합니다.0는 저장 프로시저가 다시 만들어지지 않음을 의미합니다.
[ @internal = ] internal
정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.
반환 코드 값
0(성공) 또는 1(실패).
설명
sp_articleview는 게시된 아티클을 정의하고 이 뷰의 ID를 sysarticles 테이블의 열에 sync_objid 삽입하고 열에 filter_clause 제한 절의 텍스트를 삽입하는 뷰를 만듭니다. 모든 열이 복제되고 없는 filter_clausesync_objid 경우 sysarticles 테이블의 ID가 기본 테이블의 ID로 설정되며 사용할 sp_articleview 필요가 없습니다.
세로로 필터링된 테이블(즉, 열을 필터링하려면)을 게시하려면 먼저 @sync_object 매개 변수 없이 실행 sp_addarticle 한 다음, 각 열이 복제될 sp_articlecolumn 한 번 실행(세로 필터 정의)한 다음, 실행 sp_articleview 하여 게시된 아티클을 정의하는 뷰를 만듭니다.
행을 필터링하기 위해 가로로 필터링된 테이블을 게시하려면 @filter_name 매개 변수 없이 sp_addarticle 실행합니다. sp_articlefilter 실행하여 @filter_clause 포함한 모든 매개 변수를 제공합니다. 그런 다음 동일한 @filter_clause 포함한 모든 매개 변수를 제공하여 실행sp_articleview합니다.
세로 및 가로로 필터링된 테이블을 게시하려면 @sync_object 또는 @filter_name 매개 변수 없이 sp_addarticle 실행합니다. 복제할 각 열에 대해 sp_articlecolumn 한 번 실행한 다음 sp_articlefilter 실행합니다sp_articleview.
아티클에 게시된 아티클 sp_articleview 을 정의하는 뷰가 이미 있는 경우 기존 보기를 삭제하고 자동으로 새 보기를 만듭니다. 뷰를 수동으로 만든 경우(typesysarticles5에서) 기존 보기가 삭제되지 않습니다.
사용자 지정 필터 저장 프로시저와 게시된 아티클을 수동으로 정의하는 뷰를 만드는 경우 실행 sp_articleview하지 마세요. 대신 이러한 값을 적절한 @type 값과 함께 sp_addarticle @filter_name 및 @sync_object 매개 변수로 제공합니다.
예제
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
사용 권한
sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_articleview수 있습니다.