资源池"default"中的系统内存不足,无法运行此查询

20 memory sql-server

我收到这个错误:

资源池"default"中的系统内存不足,无法运行此查询.

我只是运行100,000个简单的插入语句,如下所示.我在第85,000次插入时得到了大约误差.

这是我正在上课的一个演示......

use sampleautogrow

INSERT INTO SampleData VALUES ('fazgypvlhl2svnh1t5di','8l8hzn95y5v20nlmoyzpq17v68chfjh9tbj496t4',1)
INSERT INTO SampleData VALUES ('31t7phmjs7rcwi7d3ctg','852wm0l8zvd7k5vuemo16e67ydk9cq6rzp0f0sbs',2)
INSERT INTO SampleData VALUES ('w3dtv4wsm3ho9l3073o1','udn28w25dogxb9ttwyqeieuz6almxg53a1ki72dq',1)
INSERT INTO SampleData VALUES ('23u5uod07zilskyuhd7d','dopw0c76z7h1mu4p1hrfe8d7ei1z2rpwsffvk3pi',3)
Run Code Online (Sandbox Code Playgroud)

在此先感谢Jim M

更新:刚发现一些非常有趣的东西.我创建了另一个数据库,忘了创建SampleData表.我运行查询以添加100,000行,并在它甚至抱怨该表不存在之前得到了内存不足错误.因此,我猜测它只是试图"读入"我的100,000行而耗尽内存?

Rem*_*anu 38

您在一个批处理请求中有100.000个插入语句?您的服务器需要更多RAM才能解析请求.购买更多RAM,升级到x64或减少发送到服务器的单批次的大小.IE浏览器.GO在.sql文件中随时随地撒上一个.

  • 当您在一批中发送100k INSERT语句时,服务器最初将看到大约1密耳.'东西'的字符.它不知道里面是什么,它可能是所有点和空格.必须首先解析它,并且批量解析T-SQL,而不是行解析(不像Basic说的那样).解析消耗内存,这是你看到的错误.当您尝试使用未存在的表时,服务器甚至无法检查表是否存在,因为这在编译期间而不是在解析时发生.它必须首先解析整个批处理,而这是不可能的. (10认同)