Cannot create plan guide '%.*ls' because value '%.*ls' provided for @module_or_batch is not legal two-part name. Use 'schema_name.object_name'.

Error Message:
Msg 10505, Level 16, State 1, Procedure sp_create_plan_guide, Line 15
Cannot create plan guide ‘%.*ls’ because value ‘%.*ls’ provided for @module_or_batch is not legal two-part name. Use ‘schema_name.object_name’.

Severity level:
16.

Description:
This error message appears when you try to create a planguide, but the value provided for the @module_or_batch parameter is not a legal two part name.

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 @module_or_batch parameter must be a legal two part name.

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
    @p int
AS
SELECT
    c1
FROM
    dbo.t
WHERE
    c1 = @p;
GO

EXEC sp_create_plan_guide
    @name = ‘Guide1’,
    @stmt = ‘SELECT
                c1
            FROM
                dbo.t
            WHERE
                c1 = @p’,
    @type = ‘OBJECT’,
    @module_or_batch = ”,
    @params = NULL,
    @hints = ‘OPTION (OPTIMIZE FOR (@p = 1))’;

EXEC sp_control_plan_guide ‘DROP’, ‘Guide1’;

Remarks:
In the above example we try to create a planguide. Because the value provided for the @module_or_batch parameter is no legal two part name, the error is raised.

]]>

Leave a comment

Your email address will not be published.