Cannot create plan guide '%.*ls' because the statement specified by @stmt or @statement_start_offset either contains a syntax error or is ineligible for use in a plan guide.

Error Message:
Msg 10509, Level 16, State 1, Line 1
Cannot create plan guide ‘%.*ls’ because the statement specified by @stmt or @statement_start_offset either contains a syntax error or is ineligible for use in a plan guide. Provide a single valid Transact-SQL statement or a valid starting position of the statement within the batch. To obtain a valid starting position, query the ‘statement_start_offset’ column in the sys.dm_exec_query_stats dynamic management function.

Severity level:
16.

Description:
This error message appears when you try to create a planguide, but the @value for the stmt parameter contains a syntax error or is not eligible for use in a plan guide.

Consequences:
The T-SQL statement can be parsed, but causes the error at runtime.

Resolution:
Errors of the Severity Level 16 are generated by the user and can be fixed by the SQL Server user. The statement cannot be executed this way. The value for the @stmt parameter must be valid syntax and eligible for use in a plan guide.

Versions:
This error message was introduced with SQL Server 2005.

Example(s):
IF OBJECT_ID (‘dbo.t’) IS NOT NULL
    DROP TABLE dbo.t;
GO

CREATE TABLE dbo.t
(
    c1 int
);
GO

IF OBJECT_ID (‘dbo.p’) IS NOT NULL
    DROP PROCEDURE dbo.p;
GO

CREATE PROCEDURE dbo.p
AS
SELECT 1;
GO

EXEC sp_create_plan_guide
    @name = ‘Guide1’,
    @stmt = ‘EXEC dbo.p’,
    @type = ‘SQL’,
    @module_or_batch = NULL,
    @params = NULL,
    @hints = ‘OPTION (MAXDOP 1)’;

EXEC sp_control_plan_guide ‘DROP’, ‘Guide1’;

Remarks:
In the above example we try to create a planguide. Because the value for the @stmt parameter is ineligible for use in a plan guide when then @type parameter is set to ‘SQL’, the error is raised.

]]>

Leave a comment

Your email address will not be published.