Error Message:
Msg 10513, Level 16, State 1, Line 3
Cannot %S_MSG %S_MSG ‘%.*ls’ because it is referenced by plan guide ‘%.*ls’. Use sp_control_plan_guide to drop the plan guide first. Record the plan guide definition for future use if needed.
Severity level:
16.
Description:
This error message appears when you try to drop an object that is referenced by 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. You cannot drop an object referenced by a plan guide. You must dopr the plan guide first.
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 = ‘dbo.p’,
@params = NULL,
@hints = ‘OPTION (OPTIMIZE FOR (@p = 1))’;
EXEC sp_control_plan_guide ‘DROPP’, ‘Guide1’;
Remarks:
In the above example we try to create a planguide. Because of the typo in the sp_control_plan_guide call, the plan guide is not removed. When you execute this batch a second time, the error is raised.