FLe*_*LeX 6 sql-server ssms plan-guides
我使用以下查询创建了一个计划指南:
EXEC sp_create_plan_guide
@name = N'Entity_Property fix',
@stmt = N'SELECT ID, ENTITY_NAME, ENTITY_ID, PROPERTY_KEY, CREATED, UPDATED, json_value FROM jirascheme.entity_property WHERE ENTITY_NAME=@P0 AND ENTITY_ID=@P1 AND PROPERTY_KEY=@P2',
@type = N'SQL',
@params = N'@P0 nvarchar(255), @P1 numeric(18, 0), @P2 nvarchar(255)',
@hints = N'OPTION (OPTIMIZE FOR UNKNOWN)';
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我注意到对象资源管理器中的计划上有一个小警告图标。
它看起来像这样:
执行查询时我没有收到任何警告,并且在将鼠标悬停在它上面或检查计划指南的属性时找不到有关它的任何信息。
这仅适用于测试环境,但为什么会出现,我应该担心吗?
Low*_*n M 11
这是一个有根据的猜测,所以如果有人有更权威的东西,我很乐意撤销它。
我以前从未使用过 SSMS UI 来管理计划指南,所以我立即检查了一些服务器,我知道我有可行的计划指南设置:
正如人们所料,红色 X 表示计划已禁用。
在跟踪 SSMS 填充 UI 的这一部分时,我们可以看到它运行以下查询:
SELECT pg.name AS [Name]
, 'Server[@Name=' + quotename(CAST(serverproperty(N'Servername')AS sysname),'''') + ']' + '/Database[@Name=' + quotename(db_name(),'''') + ']' + '/PlanGuide[@Name=' + quotename(pg.name,'''') + ']' AS [Urn]
, pg.is_disabled AS [IsDisabled]
FROM sys.plan_guides AS pg
ORDER BY [Name] ASC
Run Code Online (Sandbox Code Playgroud)
其中只包括基本数据和禁用标志 - 没有别的。我的预感是黄色感叹号实际上是计划指南的默认图标。
这似乎并不太牵强,因为您正在修改执行计划,并且只要执行计划可能受到转换或计划指南之类的影响,就会使用类似的图标: