如何释放 SQL Server 内存?

jra*_*ara 9 sql-server memory

我在本地计算机上安装了 SQL Server 沙箱。我已将 SQL Server 实例可以使用的内存设置为 1000 mb。运行密集操作时,内存使用量上升到 1000 mb。当操作结束时,SQL Server 仍然持有内存。如何释放这个内存预留?

Mar*_*ith 13

停止/启动服务,其他任何事情都不会将内存释放回操作系统。

显然,您不想使用可操作的服务器做的事情,但对于本地沙箱来说却是完全合理的。我的笔记本电脑上有 3 个不同的实例,这是唯一可行的方法。

按照@Nick 的评论进行编辑。

正如 James 所指出的,如果它保留的数量超过您指定的最小值,那么理论上它应该在不需要它并且机器上存在内存压力时释放它。

你对“不需要”的定义是什么?一旦缓冲池被填满,它就不会丢弃页面,直到它们被引入的其他页面不喜欢。如果你想立即恢复内存,就像@jrara 的情况一样,你必须停止/开始。

  • [Per Microsoft](http://msdn.microsoft.com/en-us/library/ms178067.aspx):“在 Windows Server 2003 下,SQL Server 使用内存通知 API `QueryMemoryResourceNotification` 来确定缓冲池何时可以分配记忆和释放记忆。” 因此,如果您只是担心其他应用程序可能需要更多内存,那么理论上 SQL Server 会在 Windows 告诉它时释放它不需要的内存。您需要通过重新启动实例来强制释放的唯一原因是此机制未按设计工作或您的最小/最大内存设置不正确。 (2认同)