程序报错:资源池 'default' 没有足够的系统内存来运行此查询

shinger126 2015-08-26 04:25:43
系统日志中有很多:资源池 'default' 没有足够的系统内存来运行此查询。
错误: 17300,严重性: 16,状态: 1。(参数:)。所显示的错误消息非常简洁,因为在格式设置期间有错误。跟踪、ETW 和通知等均被跳过。
错误: 17312,严重性: 16,状态: 1。(参数:)。所显示的错误消息非常简洁,因为在格式设置期间有错误。跟踪、ETW 和通知等均被跳过。
系统win2008 R2,X64,数据库SQL2008 X64,请各位高人指点
...全文
13000 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharelove 2017-04-25
  • 打赏
  • 举报
回复 1
就是统过EXEC sp_updatestats 更新所有表信息解决的?我的现在也是,以前是WIN2003操作系统,现在是WIN2008,刚开始是慢,后来就是出现SELECT ERROR 系统没有足够大的内存来运行此查询,这在之前都好好的啊!
shinger126 2015-08-28
  • 打赏
  • 举报
回复
引用 8 楼 yupeigu 的回复:
[quote=引用 7 楼 shinger126 的回复:] [quote=引用 6 楼 yupeigu 的回复:] [quote=引用 5 楼 shinger126 的回复:] [quote=引用 3 楼 yupeigu 的回复:] 然后,你看看 如果开启了 有没有限制最低内存,如果限制了,可以设置更大一点。 另外,这种报错信息,我之前也遇到过,是由于语句写的有问题,比如 select * from tb where id in (..........................................) in 后面写了一大堆,导致sql server的优化器认为要执行这个语句,需要N多内存。 所以,你可以考虑简化代码 ,比如in的,你可以在程序段把这些放到一个临时表里,然后在关联就可以了。
之前在一个低配置服务器上跑都没问题的,迁移到新服务器才出现[/quote] 你更新一下整个系统的统计信息。 update statistics 表[/quote] EXEC sp_updatestats 这样吗[/quote] 嗯 对的,你这个可以更新所有表的统计信息[/quote] 已解决,多谢多谢!
LongRui888 2015-08-27
  • 打赏
  • 举报
回复
引用 7 楼 shinger126 的回复:
[quote=引用 6 楼 yupeigu 的回复:] [quote=引用 5 楼 shinger126 的回复:] [quote=引用 3 楼 yupeigu 的回复:] 然后,你看看 如果开启了 有没有限制最低内存,如果限制了,可以设置更大一点。 另外,这种报错信息,我之前也遇到过,是由于语句写的有问题,比如 select * from tb where id in (..........................................) in 后面写了一大堆,导致sql server的优化器认为要执行这个语句,需要N多内存。 所以,你可以考虑简化代码 ,比如in的,你可以在程序段把这些放到一个临时表里,然后在关联就可以了。
之前在一个低配置服务器上跑都没问题的,迁移到新服务器才出现[/quote] 你更新一下整个系统的统计信息。 update statistics 表[/quote] EXEC sp_updatestats 这样吗[/quote] 嗯 对的,你这个可以更新所有表的统计信息
shinger126 2015-08-27
  • 打赏
  • 举报
回复
引用 6 楼 yupeigu 的回复:
[quote=引用 5 楼 shinger126 的回复:] [quote=引用 3 楼 yupeigu 的回复:] 然后,你看看 如果开启了 有没有限制最低内存,如果限制了,可以设置更大一点。 另外,这种报错信息,我之前也遇到过,是由于语句写的有问题,比如 select * from tb where id in (..........................................) in 后面写了一大堆,导致sql server的优化器认为要执行这个语句,需要N多内存。 所以,你可以考虑简化代码 ,比如in的,你可以在程序段把这些放到一个临时表里,然后在关联就可以了。
之前在一个低配置服务器上跑都没问题的,迁移到新服务器才出现[/quote] 你更新一下整个系统的统计信息。 update statistics 表[/quote] EXEC sp_updatestats 这样吗
LongRui888 2015-08-26
  • 打赏
  • 举报
回复
引用 5 楼 shinger126 的回复:
[quote=引用 3 楼 yupeigu 的回复:] 然后,你看看 如果开启了 有没有限制最低内存,如果限制了,可以设置更大一点。 另外,这种报错信息,我之前也遇到过,是由于语句写的有问题,比如 select * from tb where id in (..........................................) in 后面写了一大堆,导致sql server的优化器认为要执行这个语句,需要N多内存。 所以,你可以考虑简化代码 ,比如in的,你可以在程序段把这些放到一个临时表里,然后在关联就可以了。
之前在一个低配置服务器上跑都没问题的,迁移到新服务器才出现[/quote] 你更新一下整个系统的统计信息。 update statistics 表
shinger126 2015-08-26
  • 打赏
  • 举报
回复
引用 3 楼 yupeigu 的回复:
然后,你看看 如果开启了 有没有限制最低内存,如果限制了,可以设置更大一点。 另外,这种报错信息,我之前也遇到过,是由于语句写的有问题,比如 select * from tb where id in (..........................................) in 后面写了一大堆,导致sql server的优化器认为要执行这个语句,需要N多内存。 所以,你可以考虑简化代码 ,比如in的,你可以在程序段把这些放到一个临时表里,然后在关联就可以了。
之前在一个低配置服务器上跑都没问题的,迁移到新服务器才出现
shinger126 2015-08-26
  • 打赏
  • 举报
回复
引用 2 楼 yupeigu 的回复:
你看看这个你有没有开启 资源调控器:
没有开启资源调控器
LongRui888 2015-08-26
  • 打赏
  • 举报
回复
然后,你看看 如果开启了 有没有限制最低内存,如果限制了,可以设置更大一点。 另外,这种报错信息,我之前也遇到过,是由于语句写的有问题,比如 select * from tb where id in (..........................................) in 后面写了一大堆,导致sql server的优化器认为要执行这个语句,需要N多内存。 所以,你可以考虑简化代码 ,比如in的,你可以在程序段把这些放到一个临时表里,然后在关联就可以了。
LongRui888 2015-08-26
  • 打赏
  • 举报
回复

你看看这个你有没有开启 资源调控器:
shinger126 2015-08-26
  • 打赏
  • 举报
回复
内存64G的,没有启用资源调控器。

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧