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

时间:2012-07-03 08:47:23

标签: sql-server-2008 sql-server-2008-r2

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

错误:

  

TITLE:Microsoft SQL Server Management Studio

     

无法执行脚本。

     

其他信息:

     

内存不足,无法继续执行程序。   (mscorlib程序)

有人可以帮我运行这个脚本而不会出现此错误吗?

6 个答案:

答案 0 :(得分:87)

使用命令行工具SQLCMD,它在内存上更精简。它很简单:

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

您需要有效的凭据才能访问SQL Server实例,甚至访问数据库

答案 1 :(得分:55)

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

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

这是在Technet的Use the sqlcmd Utility文章中记录的。

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

答案 2 :(得分:12)

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

我在SSMS 2012中尝试执行30MB SQL脚本时遇到此错误。
在将值从1024MB增加到2048MB后,我能够运行该脚本。

答案 3 :(得分:12)

如果需要凭据

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

答案 4 :(得分:6)

好的,没有一个答案足以让我的脚本成功恢复。

所以:

  1. 确保您的网络帐户具有足够的权限来访问SQL Server实例和您要还原的特定数据库。

  2. 您打算恢复的数据库实际上是否存在,如果它只是从Generate Scripts生成(修改包含Schema和Data),那就最好了

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

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

  5. 我希望这可以解决一些缺失的步骤。

答案 5 :(得分:0)

打开命令提示

sqlcmd -S servername -i C:\Users\mycomputer\Downloads\script\yourscript.sql -d datebasename