清除sqlserver中数据库的缓存(重新编译)而不重新启动它sqlserver

时间:2016-07-28 14:35:09

标签: sql-server sql-server-2008

有没有办法清除特定数据库的所有缓存,有点等同于OPTION(RECOMPILE)对存储过程执行的操作?

2 个答案:

答案 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