将 SQL Server 2012 中的参数化选项从简单更改为强制

Ste*_*olm 2 sql-server-2012

将 SQL Server 2012 中的参数化选项从“简单”更改为“强制”是否会清除缓存;或者应该在更改后运行 DBCC FREEPROCCACHE?

Eri*_*ing 5

它会释放您更改选项的数据库的计划缓存,而不释放其他任何内容。

在我的服务器上,我运行这些查询:

USE StackOverflow;

SELECT TOP 1000 * FROM dbo.Users AS u WHERE u.Reputation = 2;

USE StackOverflow2010;

SELECT TOP 1000 * FROM dbo.Users AS u WHERE u.Reputation = 1;
Run Code Online (Sandbox Code Playgroud)

然后我使用sp_BlitzCache来查看我的计划缓存:

坚果

之后,更改一个数据库以使用强制参数化:

ALTER DATABASE StackOverflow SET PARAMETERIZATION FORCED
Run Code Online (Sandbox Code Playgroud)

再次运行sp_BlitzCache :

坚果

仅保留了 StackOverflow2010 的计划。

全面披露:我向开源 sp_BlitzCache 存储过程贡献了许多主要工作代码。