SQL Server 2012 SP3 Enterprise Editionで、アプリケーションによって実行される特定のクエリに対してプランガイドを作成しようとしています。エイリアスを使用しないでプランガイドを作成する
クエリは次のようになります。プランガイドを作成するには
(@P1 nvarchar(5),@P2 bigint)
DELETE FROM INVENTSUMDELTA WHERE (([email protected]) AND ([email protected]))
、私は次のクエリを使用:
EXEC sp_create_plan_guide
@name = N'INVENTSUMDELTAINDEX',
@stmt = N'DELETE FROM INVENTSUMDELTA WHERE (([email protected]) AND ([email protected]))',
@type = N'SQL',
@module_or_batch = NULL,
@params = N'@P1 nvarchar(5),@P2 bigint',
@hints = N'OPTION (TABLE HINT (INVENTSUMDELTA, INDEX(I_2397TTSDIMIDX)))';
はしかし、私はエラーを受け取っ:
Msg 8724, Level 16, State 1, Line 1 Cannot execute query. Table-valued or OPENROWSET function 'INVENTSUMDELTA' cannot be specified in the TABLE HINT clause.
私は文書をチェックし、以下を見つけました:
TABLE HINT (exposed_object_name [ , [ [, ]...n ] ]) Applies the specified table hint to the table or view that corresponds to exposed_object_name. [...]
exposed_object_name can be one of the following references:
When an alias is used for the table or view in the FROM clause of the query, exposed_object_name is the alias.
When an alias is not used, exposed_object_name is the exact match of the table or view referenced in the FROM clause. For example, if the table or view is referenced using a two-part name, exposed_object_name is the same two-part name.
ここから、エイリアスを使用していないクエリのプランガイドを作成することが可能であることがわかっています。しかし、私はそれを働かせることはできません。
私の質問は、エイリアシングを使用せずに元のクエリを変更せずにプランガイドを作成する方法です。
テーブルがあり(dboスキーマ内にあります)、UDFはありません。 – Monzie