sp_articleview (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

テーブルが列または行でフィルター選択されている場合に、パブリッシュされたアーティクルを定義するビューを作成します。 このビューは、出力先のテーブル用にフィルター選択されたスキーマやデータのソースとして使用されます。 このストアド プロシージャでは、サブスクライブ解除されたアーティクルのみを変更できます。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

Transact-SQL 構文表記規則

構文

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'

アーティクルを含むパブリケーションの名前。 @publicationsysname で、既定値はありません。

[ @article = ] N'article'

アーティクルの名前。 @articlesysname で、既定値はありません。

[ @view_name = ] N'view_name'

発行済みアーティクルを定義するビューの名前。 @view_namenvarchar(386) で、既定値は NULL です。

[ @filter_clause = ] N'filter_clause'

水平フィルターを定義する制限 (WHERE) 句。 制限句を入力するときは、 WHERE キーワードを省略します。 @filter_clausenvarchar(max) で、既定値は NULL です。

[ @change_active = ] change_active

サブスクリプションを持つパブリケーションの列の変更を許可します。 @change_activeint で、既定値は 0 です。

  • 0場合、列は変更されません。
  • 1場合は、サブスクリプションを持つアクティブなアーティクルでビューを作成または再作成できます。

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

このストアド プロシージャによって実行されたアクションによって、既存のスナップショットが無効になる可能性があることを確認します。 @force_invalidate_snapshotビットで、既定値は 0 です。

  • 0 は、アーティクルに対する変更によってスナップショットが無効になることがないように指定します。 ストアド プロシージャが変更に新しいスナップショットが必要であることを検出した場合、エラーが発生し、変更は行われません。
  • 1 は、アーティクルに対する変更によってスナップショットが無効になる可能性があることを指定します。また、新しいスナップショットを必要とする既存のサブスクリプションがある場合は、既存のスナップショットを古いスナップショットとしてマークし、新しいスナップショットを生成するためのアクセス許可を付与します。

[ @force_reinit_subscription = ] force_reinit_subscription

このストアド プロシージャによって実行されるアクションで、既存のサブスクリプションの再初期化が必要になる可能性があることを確認します。 @force_reinit_subscriptionbit で、既定値は 0 です。

  • 0 は、アーティクルに対する変更によってサブスクリプションが再初期化されないように指定します。 変更によってサブスクリプションの再初期化が必要であることがストアド プロシージャによって検出された場合、エラーが発生し、変更は行われません。
  • 1 は、アーティクルに対する変更によって既存のサブスクリプションが再初期化されることを指定し、サブスクリプションの再初期化を実行するためのアクセス許可を付与します。

[ @publisher = ] N'publisher'

SQL Server 以外のパブリッシャーを指定します。 @publishersysname で、既定値は NULL です。

SQL Server パブリッシャーから発行する場合、@publisher は使用しないでください。

[ @refreshsynctranprocs = ] refreshsynctranprocs

レプリケーションの同期に使用されるストアド プロシージャを自動的に再作成するかどうかを指定します。 @refreshsynctranprocsbit で、既定値は 1 です。

  • 1 は、ストアド プロシージャが再作成されることを意味します。
  • 0 は、ストアド プロシージャが再作成されていないことを意味します。

[ @internal = ] internal

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

sp_articleviewは、パブリッシュされたアーティクルを定義するビューを作成し、sysarticles (Transact-SQL) テーブルのsync_objid列にこのビューの ID を挿入し、filter_clause列に制限句のテキストを挿入します。 すべての列がレプリケートされ、filter_clauseがない場合、sysarticles (Transact-SQL) テーブルのsync_objidはベース テーブルの ID に設定され、sp_articleviewの使用は必要ありません。

垂直方向にフィルター処理されたテーブル (つまり、列をフィルター処理する) を発行するには、最初に@sync_objectパラメーターなしでsp_addarticleを実行し、レプリケートする列ごとに sp_articlecolumn (Transact-SQL) を 1 回実行し (垂直フィルターを定義する)、sp_articleview実行して、発行されたアーティクルを定義するビューを作成します。

水平方向にフィルター処理されたテーブル (つまり、行をフィルター処理する) を発行するには、 sp_addarticle (Transact-SQL) @filter_name パラメーターなしで実行します。 @filter_clauseを含むすべてのパラメーターを指定して、sp_articlefilter (Transact-SQL) を実行します。 次に、 sp_articleviewを実行し、同じ @filter_clauseを含むすべてのパラメーターを指定します。

垂直方向および水平方向にフィルター処理されたテーブルを発行するには、@sync_objectパラメーターまたは@filter_name パラメーターを指定してsp_addarticle (Transact-SQL) を実行します。 レプリケートする列ごとに sp_articlecolumn (Transact-SQL) を 1 回実行し、 sp_articlefilter (Transact-SQL) sp_articleviewを実行します。

アーティクルに発行済みのアーティクルを定義するビューが既にある場合、 sp_articleview は既存のビューを削除し、新しいビューを自動的に作成します。 ビューが手動で作成された場合 (sysarticles (Transact-SQL) でtype5場合)、既存のビューは削除されません。

カスタム フィルター ストアド プロシージャと、パブリッシュされたアーティクルを手動で定義するビューを作成する場合は、 sp_articleview実行しないでください。 代わりに、これらの値をsp_addarticle (Transact-SQL) @filter_nameおよび@sync_objectパラメーターとして、適切な@type値と共に指定します。

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を実行できます。