Troubleshooting SQL Server 2005 AWE

来源:五餅二魚工作室  发布日期:2013-06-21 21:12:19

最近接到一个求助案件,有朋友反映说在 Windows 2008 的环境下,不知道计算机中的内存到底被谁吃掉了,该计算机主要是执行 SQL Server 2005 和 Tomcat,想知道内存到底被谁吃掉了。于是请朋友先利用工作管理员把画面传过来看一下。

 


 

从上述的信息中可以看出来,目前的 SQL Server 是 32 位的版本运行在 64 位的操作系统环境下,于是当下很自然的认为应该是 SQL Server 设定有启动 AWE 才对,也因此才会在工作管理员上看起来只有吃 345MB,因为这里并没有包含 AWE 所使用的大小,所以看起来计算机的内存有一大半也许都被 SQL Server 所使用了。心里想说这实在是个太简单的问题,也就没有想太多的直接回复,但没有多久就收到对方的回复,表示 SQL Server 他并没有开启 AWE 的设定 !

 


 

看了所传来的图片之后,心中也很纳闷,如果真的没有开启 AWE,怎么可能 32 位的 SQL Server 会只有使用 345MB 的内存,因此找了另外一个工具来证明计算机中的内存分配,此部分我采用微软的 RAMMAP 的工具 ( http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx ),这是一个非常好用的监看工具,他可以很清楚地让你知道系统的内存是在 Active , StandBy , Modified 的状态下各有多少,如果想更清楚这每个状态的意义和每页内所提供的信息,也可以参考看看 Channel 9 上面有一堂专门介绍的课程 。

 

 
 

但对方看到这样的讯息之后,还是觉得这个只能证明说操作系统有程序使用 AWE,但不能证明那些都是 SQL Server 所占用的。好吧,既然要证据,那我们就从 SQL Server 的 Log 档案和 DBCC 指令来做查看。

从 Log 档案中我们可以找到,在最后一次 SQL Server 启动的时候,此时是有开启 AWE 的模式。

 


 

但接下来在后面有人设定将 AWE 的设定给关闭,但因为没有重新启动,因为目前还是按照开机时候的设定,是开启 AWE 模式的状况。

 


 

接下来透过 DBCC MEMORYSTATUS 的指令,就可以更明确看出来,操作系统中被使用到的 20GB 的 AWE,的确都被 SQL Server 拿去使用了。

 


 

透过上述的这些资料来左证,可以清楚知道内存被 SQL Server 拿去使用,至于被关闭 AWE 的部分,可能是原本的管理人员认为在 64 位环境下是不需要采用 AWE,因此才会去更改那样的设定,但是没有记得说更改那个设定之后,必须要将 SQL Server 重新启动才会发生作用。而所谓 64 位环境下不需要使用 AWE,那个主要指的是当操作系统和 SQL Server 两者都是 64 位的环境才不需要,但如果 SQL Server 本身是 32 位的话,那么如果不开启 AWE,在 32 位的操作系统上最多只能使用 1.7GB 的内存,在 64 位的环境下可以使用到 4GB。于是把这些状况都和管理人员说明清楚之后,总算可以结束一个问题的处理,也让自己可以复习一下这些这些指令和工具。如果有朋友也有类似的困扰,可以参考上述的步骤来做个检查,也可以让自己知道到底计算机中的内存都被拿去做甚么了。

 

 

 
Tag标签: Troubleshooting   SQL   Server  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规