在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
我能够运行脚本。
好吧,没有任何答案足以让我的脚本成功恢复。
所以:
-
确保您的networking帐户有足够的权限访问SQL Server实例和您要恢复的特定数据库。
-
最好是您要还原的数据库实际上是存在的,如果它只是从“生成脚本”生成(修改为包含模式和数据)
-
以pipe理员模式运行命令行工具(如有必要),例如,从开始菜单中的运行键入CMD
-
在命令行工具中,键入
"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,为我工作,增加日志文件到无限。
- 打开SQL Server Management Studio
- 在对象资源pipe理器中,右键单击数据库名称并单击属性
- 在“文件”部分中,将数据的自动增长大小和日志大小更改为无限制。