对于特定的应用程序,我有一组查询,每次数据库因任何原因重新启动时都会运行(通常是服务器重启)。这些“主要”SQL Server的页面缓存具有数据的通用核心工作集,因此应用程序在用户第一次登录后不会异常缓慢。
该应用程序的一个实例运行在一个过度规划的安排上,其中SQL框的RAM大于数据库的大小(机器中的4Gb,数据库当前低于1.5Gb,并且相对于数据库不太可能增长太多在不久的将来)。是否有一种简洁/简单的方法告诉SQL Server消失并将所有内容加载到RAM中?
通过脚本扫描sysobjects
& sysindexes
并为找到的每个密钥和索引运行SELECT * FROM <table> WITH(INDEX(<index_name>)) ORDER BY <index_fields>
,这应该导致每个使用过的页面至少被读取一次,因此在RAM中,但是有更清洁或更有效的方法吗?数据库服务器停止的所有计划实例都超出了正常工作时间(所有用户最多只有一个时区,而且与我不同,它们都没有在愚蠢的时间工作)所以这样一个过程(直到完成)放慢速度超过工作集的用户根本没有准备就绪不会是一个问题。