Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
长SQL文件运行SQL Server时内存不足(22000行)_Sql_Sql Server 2008_Memory_Out Of Memory - Fatal编程技术网

长SQL文件运行SQL Server时内存不足(22000行)

长SQL文件运行SQL Server时内存不足(22000行),sql,sql-server-2008,memory,out-of-memory,Sql,Sql Server 2008,Memory,Out Of Memory,我有一个.sql文件,大约22000行长。它是由其他内容生成的,但基本上每行只包含一条update语句 在SQLServerManagementStudio中运行该文件时出现此错误 资源池“内部”中的系统内存不足,无法运行 运行此查询 我想我只需要将这个查询文件拆分,但我不确定最好的方法。我可以把这个文件切成2000行,或者我想是这样的 这似乎是一个简单的问题,我会经常这样做,我想拿出一个好的解决方案。有什么想法吗?您可能希望通过而不是通过SSMS GUI界面来运行脚本。您可能遇到了批大小限制,

我有一个
.sql
文件,大约22000行长。它是由其他内容生成的,但基本上每行只包含一条update语句

在SQLServerManagementStudio中运行该文件时出现此错误

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

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


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

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

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

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

  • 在中间插入GO语句,以强制执行新批处理
  • 拆分为多个文件

  • 一点shell脚本应该就足够了。在SQL Management studio上运行时,我遇到了同样的问题,我所做的是在命令行osql–S localhost–d mydb–E–I中执行它。\hugescript.SQL


    我也遇到了类似的问题,在命令提示符下从保存的我运行下面的命令

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

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

  • 在对象资源管理器中,在服务器上单击鼠标右键,然后选择“属性”
  • 单击内存节点
  • 在“服务器内存选项”下,输入所需的内存量 最小服务器内存和最大服务器内存

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

    22000次更新听起来好像有些地方做得不对。没有办法使这成为一个更加基于集合的操作?它是从一个非常专业的工具创建的excel电子表格创建的。电子表格中有X行需要更新数据库中相应的行,但这是一个非常旧的工具,只能导出到Excel。你的生活糟透了。:)Excel是任何DBA的祸根。增加SQL server的内存如何?