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

Vik*_*ore 56 sql-server-2008 sql-server-2008-r2

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

错误:

标题:Microsoft SQL Server Management Studio

无法执行脚本.

附加信息:

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

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

小智 88

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

SQLCMD -d <database-name> -i filename.sql
Run Code Online (Sandbox Code Playgroud)

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

  • 使用用户凭据SQLCMD -s.\ sqlent1 -U username -P password -d database -i script.sql (9认同)

Chr*_*uer 56

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

sqlcmd -S <ComputerName>\<InstanceName> -d <DatabaseName> -i <MyScript.sql>
Run Code Online (Sandbox Code Playgroud)

这在Technet的使用sqlcmd实用程序文章中有记录.

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

  • 例如我使用 - >`C:\用户\ tstick \文档> SQLCMD -S server.subdomain.companyname.com,4184 -d ebimap -i SQLscript.sql` (2认同)
  • 看起来需要排除默认实例名称(MSSQLSERVER)才能连接,例如`sqlcmd -S localhost -d db`而不是`sqlcmd -S localhost\MSSQLSERVER -d db` (2认同)

小智 12

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

30MB在SSMS 2012中尝试执行SQL脚本时遇到此错误.
从增加值1024MB2048MB我之后我能够运行脚本.


Jud*_*ude 12

如果需要凭据

sqlcmd -S <ComputerName>\<InstanceName> -U <username> -P <password> -d <DatabaseName> -i <MyScript.sql>
Run Code Online (Sandbox Code Playgroud)


Car*_*ode 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中的生成脚本生成的还原脚本的完整文件路径.

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