Sql server SQL Server 2008 R2 Express上的大型脚本失败

Sql server SQL Server 2008 R2 Express上的大型脚本失败,sql-server,sql-server-2008r2-express,Sql Server,Sql Server 2008r2 Express,我需要在SQLServer2008R2 Express上运行一个“大型”脚本,但它在以下情况下失败: 资源池“内部”中的系统内存不足,无法运行此查询 该脚本保存到磁盘上大约10MB,包含大约54000条顶级语句(insert/delete/update),并声明大约5000个变量(类型为BIGINT) 我正在运行SQL Server 2008 R2 Express 64位10.5.1746。有3GB分配给VM,1GB分配给SQL Server,每个查询的最小内存为512kb。可在上找到DBCC

我需要在SQLServer2008R2 Express上运行一个“大型”脚本,但它在以下情况下失败:

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

该脚本保存到磁盘上大约10MB,包含大约54000条顶级语句(insert/delete/update),并声明大约5000个变量(类型为
BIGINT

我正在运行SQL Server 2008 R2 Express 64位10.5.1746。有3GB分配给VM,1GB分配给SQL Server,每个查询的最小内存为512kb。可在上找到DBCC MEMORYSTATUS的结果

该脚本只是一个(轻量级)生产数据库的恢复,该数据库被导出为SQL语句(仅数据,无模式)

如果不可能做到这一点,我很震惊SQL Server不能处理这样一个基本的场景。我已经在Firebird和Sqlite上测试了这个等价的场景,效果很好!(它们是开源产品)

注意:由于脚本末尾引用了开头声明的变量,因此无法将脚本拆分


注意:在匆忙将此标记为“重复”之前,请注意其他类似线程没有解决“如何在sql server 2008中运行非常大的脚本”这一特定问题。

sql server Express的可用内存量有限。该内存中只有一部分可用于执行查询。您可以尝试在数据库上设置强制参数化,因为它可能会减少计划所需的内存,这将为查询执行留下更多内存(取决于您的特定查询)


最好的选择是使用支持更多内存的SQL Server版本。开发者版价格合理,但不能用于生产。标准版将是您的下一个最佳选择。

到目前为止,唯一有效的方法是升级到SQL Server 2012 Express。执行查询花了几分钟时间,但执行完全没有错误。

是否为SQL Server安装了Service Pack 1(请参阅)?@rsbarro:我安装了R2,并应用了该修补程序。仍然失败。另一种方法是将变量值存储在表中,并使用go中断脚本,并在需要时从表中检索变量。无论如何,这取决于您正在运行的脚本。这只是一个建议。强制参数化不起作用。您认为SQL Server 2012 Express可以处理这种情况吗?可能不行。您将不得不使用与Express不同的版本。