sp_check_subset_filter (Transact-SQL)
テーブルに対してフィルタ句を確認して、フィルタ句がテーブルに対して有効であるかどうかを判定するのに使用します。このストアド プロシージャは、フィルタが事前計算済みパーティションでの使用条件を満たすかどうかも含め、指定されたフィルタに関する情報を返します。このストアド プロシージャは、パブリッシャ側でパブリケーションを含むデータベースについて実行されます。
構文
sp_check_subset_filter [ @filtered_table = ] 'filtered_table'
, [ @subset_filterclause = ] 'subset_filterclause'
[ , [ @has_dynamic_filters = ] has_dynamic_filters OUTPUT ]
引数
- [ @filtered_table= ] 'filtered_table'
フィルタ済みテーブルの名前を指定します。filtered_table のデータ型は nvarchar(400) で、既定値はありません。
- [ @subset_filterclause = ] 'subset_filterclause'
テストの対象となるフィルタ句を指定します。subset_filterclause のデータ型は nvarchar(1000) で、既定値はありません。
- [ @has_dynamic_filters= ] has_dynamic_filters
フィルタ句がパラメータ化された行フィルタであるかどうかを示します。has_dynamic_filters のデータ型は bit で、既定値は NULL です。これは出力パラメータです。フィルタ句がパラメータ化された行フィルタである場合は 1 の値を返します。
結果セット
列名 | データ型 | 説明 |
---|---|---|
can_use_partition_groups |
bit |
パブリケーションが事前計算済みパーティションの使用条件を満たすかどうかを示します。1 の場合、事前計算済みパーティションを使用することができ、0 の場合は使用できないことを示します。 |
has_dynamic_filters |
bit |
指定されたフィルタ句に少なくとも 1 つのパラメータ化された行フィルタが含まれるかどうかを示します。1 はパラメータ化された行フィルタが使用されていることを示し、0 はそのような関数が使用されていないことを示します。 |
dynamic_filters_function_list |
nvarchar(500) |
アーティクルを動的にフィルタ選択するフィルタ句内の関数の一覧です。各関数は、セミコロンで区切られます。 |
uses_host_name |
bit |
HOST_NAME() 関数がフィルタ句で使用されるかどうかを示します。1 はこの関数が使用されることを示します。 |
uses_suser_sname |
bit |
SUSER_SNAME() 関数がフィルタ句で使用されるかどうかを示します。1 はこの関数が使用されることを示します。 |
解説
sp_check_subset_filter はマージ レプリケーションで使用します。
sp_check_subset_filter は、テーブルがパブリッシュされていない場合でも、任意のテーブルに対して実行できます。このストアド プロシージャを使用して、フィルタ選択されたアーティクルを定義する前にフィルタ句を検証することができます。
権限
sp_check_subset_filter を実行できるのは、固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバだけです。
戻り値
成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。
参照
その他の技術情報
事前計算済みパーティションによるパラメータ化されたフィルタのパフォーマンス最適化