有没有办法清除特定数据库的所有缓存,有点等同于OPTION(RECOMPILE)对存储过程执行的操作?
答案 0 :(得分:1)
我认为最接近的是:
DBCC DROPCLEANBUFFERS
更多信息:MSDN
仔细阅读备注部分:
使用DBCC DROPCLEANBUFFERS使用冷缓冲区缓存测试查询 没有关闭并重新启动服务器。删除干净的缓冲区 从缓冲池中,首先使用CHECKPOINT生成冷缓冲区 缓存。这会强制当前数据库的所有脏页 写入磁盘并清理缓冲区。执行此操作后,即可 发出DBCC DROPCLEANBUFFERS命令从中删除所有缓冲区 缓冲池。
您通常会使用此:
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
答案 1 :(得分:0)
你在说什么缓存?
如果是程序缓存,您可以使用DBCC FLUSHPROCINDB(<db_id>);
如果所有缓存(包括过程缓存和缓冲区缓存)都可以使用
ALTER DATABASE YourDB SET OFFLINE --WITH ROLLBACK IMMEDIATE
ALTER DATABASE YourDB SET ONLINE