长SQL文件运行SQL Server内存不足(22,000行)

时间:2012-04-20 20:20:30

标签: sql sql-server-2008 memory out-of-memory

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

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

  

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

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

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

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

  1. 在其间插入GO语句,以强制新批次
  2. 拆分为多个文件
  3. 一个小的shell脚本应该足够了。 UnxUtilssplitheadtail应该证明是有用的。

答案 3 :(得分:3)

我遇到了类似的问题,并在命令提示符下运行blog以下的命令保存了我。

   sqlcmd -S YOURSQLSERVER\INSTANCENAME -i "C:\Your Script.sql"

答案 4 :(得分:0)

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

  1. 在对象资源管理器中,右键单击服务器并选择“属性”。
  2. 单击“内存”节点。
  3. 在“服务器内存选项”下,输入所需的金额 最小服务器内存和最大服务器内存。
  4. 默认最大值为2147483647,我将其更改为9147483647,问题解决了。