8

我有一个.sql大约 22,000 行长的文件。它是由其他东西生成的,但基本上每行只包含一个更新语句。

在 SQL Server Management Studio 中运行文件时出现此错误。

资源池“内部”中的系统内存不足,无法运行此查询

我想我只需要拆分这个查询文件,但我不确定最好的方法。我可以将文件切成 2000 行块或我想的东西。

这似乎是一个简单的问题,我会经常这样做,我想提出一个好的解决方案。有任何想法吗?

4

5 回答 5

5

您可能希望通过SQLCMD而不是通过 SSMS GUI 界面运行脚本。

于 2012-04-20T20:28:16.693 回答
4

我遇到了类似的问题,在博客的命令提示符下运行命令救了我。

   sqlcmd -S YOURSQLSERVER\INSTANCENAME -i "C:\Your Script.sql"
于 2015-07-17T08:23:03.497 回答
3

您可能遇到了批处理大小的限制,因此 SQL Server 在解析批处理时遇到了问题。如果您可以运行大约 5000 行块(突出显示,执行),那么这将证实我的理论。

一旦你知道正确的批量大小,你可以:

  1. 在两者之间插入 GO 语句,以强制执行新批处理
  2. 拆分为多个文件

一个小shell脚本应该足够了。splitheadtailUnxUtils应该很有用。

于 2012-04-20T20:45:56.253 回答
3

我在 SQL Management Studio 上运行时遇到了同样的问题,我所做的是在命令行中执行它 osql –S localhost –d mydb –E –i .\hugescript.sql

http://tutewall.com/cannot-execute-script-insufficient-memory-error-sql-server/

于 2012-09-24T02:49:52.833 回答
0

您可以使用以下解决方案为服务器分配更多内存:

  1. 在对象资源管理器中,右键单击服务器并选择属性。
  2. 单击内存节点。
  3. 在服务器内存选项下,为最小服务器内存和最大服务器内存输入所需的数量。

最大值的默认值为 2147483647 ,我将其更改为 9147483647 ,我的问题就解决了。

于 2015-07-21T16:33:29.343 回答