SQL Server 2008内存用不上的解决办法

最近两周,DB 服务器内存一直占用不上,给了32G,结果用的内存量一直在4G左右,真的很让人纠结,正常情况下,应该用到17G左右。结果排查了半天,原来是 AWE 开启后没有重启服务,真的是太难了,太纠结了,让我找了半天。重启服务后,内存占用慢慢上来了,到了正常水平。



虽然没什么技术含量,但是查找的过程还是蛮有意思的,查找的方法也是能举一反三的,所以记录一下。



首先检查的是服务器的版本,发现是  Windows 2003 X64,结果令人诧异的是装了 Server Server 2008 X86,太让人纠结了,要是装 Server Server 2008 X64 不上更好吗?在 64位 系统上,32位 的 Server Server 是最多只能占用4G 的,所以,也就把 排查 AWE 是否配置作为了主要入手点。



直接运行 “sp_configure ’awe enabled’” ,却报出了 “The configuration option ’awe enabled’ does not exist, or it may be an advanced option.” 的错误,原来需要这样:



  exec sp_configure ’show advanced options’, 1

  RECONFIGURE

  GO



  exec sp_configure



之后发现 config_value 为 1 ,而 run_value 为 0,真的是很郁闷,明显的配置成功了,却没有运行成功,肯定是配置后没有重启 Sql Server 服务。



exec sp_configure 是比较好用的,能检查一些配置项是否生效,主要通过对比 config_value 、run_value 和 默认值。

下表列出了所有可用的配置选项、可能的设置范围及其默认值。配置选项按以下字母代码标记:

  • A = 高级选项,仅允许有经验的数据库管理员或认证的 SQL Server 技术人员进行更改,并且需要将 show advanced options 设为 1。


  • RR = 需要重新启动数据库引擎的选项。


  • SC = 自配置选项。


    配置选项 最小值 最大值 默认值

    Ad Hoc Distributed Queries (A)

    0

    1

    0

    affinity I/O mask(A,RR)

    -2147483648

    2147483647

    0

    affinity64 I/O mask(A,仅适用于 64 位版本的 SQL Server)

    -2147483648

    2147483647

    0

    affinity mask (A)

    -2147483648

    2147483647

    0

    affinity64 mask(A,仅适用于 64 位版本的 SQL Server)

    -2147483648

    2147483647

    0

    Agent XPs (A)

    0

    1

    0

    (当 SQL Server 代理启动时,改为 1。如果 SQL Server 代理设置为在安装过程中自动启动,则为 1。)

    allow updates(已过时。请勿使用。将在重新配置期间导致错误。)

    0

    1

    0

    awe enabled(A,RR)

    0

    1

    0

    blocked process threshold (A)

    0

    86400

    0

    c2 audit mode(A,RR)

    0

    1

    0

    clr enabled

    0

    1

    0

    common criteria compliance enabled (A,RR)

    0

    1

    0

    cost threshold for parallelism (A)

    0

    32767

    5

    cross db ownership chaining

    0

    1

    0

    cursor threshold (A)

    -1

    2147483647

    -1

    Database Mail XPs (A)

    0

    1

    0

    default full-text language (A)

    0

    2147483647

    1033

    default language

    0

    9999

    0

    default trace enabled (A)

    0

    1

    1

    disallow results from triggers (A)

    0

    1

    0

    fill factor(A,RR)

    0

    100

    0

    ft crawl bandwidth (max),请参阅 ft crawl bandwidth (A)

    0

    32767

    100

    ft crawl bandwidth (min),请参阅 ft crawl bandwidth (A)

    0

    32767

    0

    ft notify bandwidth (max),请参阅 ft notify bandwidth (A)

    0

    32767

    100

    ft notify bandwidth (min),请参阅 ft notify bandwidth (A)

    0

    32767

    0

    index create memory(A,SC)

    704

    2147483647

    0

    in-doubt xact resolution (A)

    0

    2

    0

    lightweight pooling(A,RR)

    0

    1

    0

    locks(A,RR,SC)

    5000

    2147483647

    0

    max degree of parallelism (A)

    0

    64

    0

    max full-text crawl range (A)

    0

    256

    4

    max server memory(A,SC)

    16

    2147483647

    2147483647

    max text repl size

    0

    2147483647

    65536

    max worker threads(A,RR)

    128

    32767

    (对于 32 位 SQL Server,建议最大为 1024;对于 64 位 SQL Server,建议最大为 2048。)

    0

    归零操作将根据处理器的数量自动配置最大工作线程数,可以使用公式 (256+(<处理器数> -4)* 8) 来计算 32 位 SQL Server 的线程数,64 位 SQL Server 的线程数为 32 位的 2 倍。

    media retention(A,RR)

    0

    365

    0

    min memory per query (A)

    512

    2147483647

    1024

    min server memory(A,SC)

    0

    2147483647

    8

    nested triggers

    0

    1

    1

    network packet size (A)

    512

    32767

    4096

    Ole Automation Procedures (A)

    0

    1

    0

    open objects(A,RR,已过时)

    0

    2147483647

    0

    PH_timeout (A)

    1

    3600

    60

    precompute rank (A)

    0

    1

    0

    priority boost(A,RR)

    0

    1

    0

    query governor cost limit (A)

    0

    2147483647

    0

    query wait (A)

    -1

    2147483647

    -1

    recovery interval(A,SC)

    0

    32767

    0

    remote access (RR)

    0

    1

    1

    remote admin connections

    0

    1

    0

    remote login timeout

    0

    2147483647

    20

    remote proc trans

    0

    1

    0

    remote query timeout

    0

    2147483647

    600

    Replication XPs 选项 (A)

    0

    1

    0

    scan for startup procs(A,RR)

    0

    1

    0

    server trigger recursion

    0

    1

    1

    set working set size(A,RR,已过时)

    0

    1

    0

    show advanced options

    0

    1

    0

    SMO and DMO XPs (A)

    0

    1

    1

    SQL Mail XPs (A)

    0

    1

    0

    transform noise words (A)

    0

    1

    0

    two digit year cutoff (A)

    1753

    9999

    2049

    user connections(A,RR,SC)

    0

    32767

    0

    User Instance Timeout(A,仅出现在 SQL Server 2005 Express Edition 中)

    5

    65535

    60

    user instances enabled(A,仅 SQL Server 2005 Express Edition 中提供)

    0

    1

    0

    user options

    0

    32767

    0

    Web Assistant Procedures (A)

    0

    1

    0

    xp_cmdshell (A)

    0

    1

    0

© 版权声明
THE END
喜欢就支持以下吧
点赞0
评论 共3条
    • 小文
    • 该昵称已被管理员无情的屏蔽鸟0
      sql2008占用内存太大了,运行的时候慢得要命
      2021年前回复
    • 小文
    • 南宁舞狮0
      支持一下下
      2021年前回复
    • 小文
    • 南宁班服定做0
      评论发表成功,请等待管理员审核{smile:1}
      2021年前回复