在SQL Server 2008 R2上运行50 MB脚本时出错

我正在使用SQL Server 2008 R2,我有一个脚本来更新数据库,该脚本大小约为50 MB,包含大约800,000行。

错误:

TITLE:Microsoft SQL Server Management Studio

无法执行脚本。

附加信息:

内存不足以继续执行程序。 (mscorlib程序)

有人可以帮我运行这个脚本没有得到这个错误?

使用精简内存的命令行工具SQLCMD。 这是如此简单:

SQLCMD -d <database-name> -i filename.sql 

您需要有效的凭据来访问您的SQL Server实例或甚至访问数据库

添加@ user1293068的答案,我需要指定实例名称。 这是我的完整语法:

 sqlcmd -S <ComputerName>\<InstanceName> -d <DatabaseName> -i <MyScript.sql> 

这是logging在Technet的使用sqlcmd实用程序文章。

(请注意,您必须input开关值“-S”,而不是“-s”,开关区分大小写。)

您也可以尝试增加服务器属性中的“最大服务器内存”值。
要编辑此设置,请右键单击服务器名称,然后select属性>内存选项卡。

我遇到了这个错误,试图在SSMS 2012中执行一个30MB SQL脚本。
1024MB增加到2048MB我能够运行脚本。

好吧,没有任何答案足以让我的脚本成功恢复。

所以:

  1. 确保您的networking帐户有足够的权限访问SQL Server实例和您要恢复的特定数据库。

  2. 最好是您要还原的数据库实际上是存在的,如果它只是从“生成脚本”生成(修改为包含模式和数据)

  3. 以pipe理员模式运行命令行工具(如有必要),例如,从开始菜单中的运行键入CMD

  4. 在命令行工具中,键入"SQLCMD -d CMS -i C:\Carnotaurus\Data\script.sql" 。 在这里, CMS是我打算还原的数据库的名称, "C:\Carnotaurus\Data\script.sql"是由SMSS中的生成脚本生成的还原脚本的完整文件path。

我希望这清除了一些缺失的步骤。

如果证书是必需的

 sqlcmd -S <ComputerName>\<InstanceName> -U <username> -P <password> -d <DatabaseName> -i <MyScript.sql> 

我在SQL Server 2012中也遇到类似的问题,因为我的文件大小是70MB。

解决scheme,为我工作,增加日志文件到无限。

  1. 打开SQL Server Management Studio
  2. 在对象资源pipe理器中,右键单击数据库名称并单击属性
  3. 在“文件”部分中,将数据的自动增长大小和日志大小更改为无限制。