无法执行脚本:内存不足,无法继续执行程序
Posted
技术标签:
【中文标题】无法执行脚本:内存不足,无法继续执行程序【英文标题】:Cannot execute script: Insufficient memory to continue the execution of the program 【发布时间】:2013-07-28 22:22:15 【问题描述】:我有一个 123MB 的 sql 文件,需要在本地 PC 上执行。但我得到了
Cannot execute script: Insufficient memory to continue the execution of the program
如何解决这个问题?
【问题讨论】:
@marc_s 当我单击 Ctlr+E 时,它立即显示此错误 Getting error while running 50 MB script on SQL Server 2008 R2的可能重复 【参考方案1】:使用更节省内存的命令行工具 SQLCMD。很简单:
SQLCMD -d <database-name> -i filename.sql
您需要有效的凭据才能访问您的 SQL Server 实例,甚至访问数据库
取自here。
【讨论】:
使用完整凭据,指定数据库和服务器:sqlcmd -S-e
以获得可信连接【参考方案2】:
如果我正确理解您的问题,您正在尝试恢复 (transact sql) xyz.sql - 数据库 + 架构。你可以试试这个对我有用的命令:
SQLCMD -U sa -i xyz.sql
【讨论】:
【参考方案3】:您还可以简单地增加服务器属性中的每个查询的最小内存值。要编辑此设置,请右键单击服务器名称并选择属性 > 内存选项卡。
我尝试在 SSMS 2012 中执行 30MB SQL 脚本时遇到此错误。将值从 1024MB 增加到 2048MB 后,我能够运行该脚本。
(这是我提供的相同答案here)
【讨论】:
【参考方案4】:也许对你有帮助!请参阅以下步骤。
以管理员身份打开 cmd.exe。 创建文档目录。 将您的 SQL 脚本文件 (script.sql) 放入文档文件夹中。 使用 sqlcmd、server-name、database-name 和 script-file-name 键入查询,如上面突出显示的查询或命令行屏幕下方。sqlcmd -S 服务器名 -d 数据库名 -i script.sql
【讨论】:
你可以添加用户名 -sa 和密码 -123 , sqlcmd -S viaserver -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql 它给我错误Sqlcmd:错误:Mircorsoft SQL Server Native Client 10.0:由于预登录失败,客户端无法建立连接。【参考方案5】:有时,由于脚本和数据过大,我们会遇到此类错误。服务器需要足够的内存来执行并给出结果。我们可以简单地增加每个查询的内存大小。
你只需要进入 sql server 属性 > 内存选项卡(左侧)> 现在设置你要添加的最大内存限制。
另外,顶部有一个选项“结果到文本”,与“结果到网格”选项相比,它消耗的内存更少,我们也可以选择结果到文本以减少内存执行。
【讨论】:
【参考方案6】:sqlcmd -S mamxxxxxmu\sqlserverr -U sa -P x1123 -d QLDB -i D:\qldbscript.sql
以管理员身份运行时打开命令提示符
输入上面的命令
“mamxxxxxxmu”是计算机名称 “sqlserverr”是服务器名称 “sa”是服务器的用户名 “x1123”是服务器密码 “QLDB”是数据库名称 “D:\qldbscript.sql”是要在数据库中执行的sql脚本文件
【讨论】:
【参考方案7】:试试这一步,
1)打开 PowerShell
2)编写这个命令:
sqlcmd -S PCNAME\SQLEXPRESS -U user -P password -d databanse_name -i C:\script.sql
3)按回车
:-)
【讨论】:
【参考方案8】:如果在开发过程中需要连接LocalDB,可以使用:
sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
【讨论】:
【参考方案9】:以下脚本完美运行:
sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x
症状:
使用 sqlcmd 实用程序执行恢复脚本时,遇到“Sqlcmd: Error: Syntax error at line XYZ near command ‘X’ in file ‘file_name.sql’.”错误。
原因:
这是一个 sqlcmd 实用程序限制。如果 SQL 脚本包含任何形式的美元符号 ($),该实用程序将无法正确执行该脚本,因为默认情况下它会自动替换所有变量。
分辨率:
为了以任何形式执行带有美元($)符号的脚本,需要在命令行中添加“-x”参数。
例如
原文: sqlcmd -s 服务器名 -d 数据库名 -E -ic:\Temp\Recovery_script.sql
固定: sqlcmd -s 服务器名 -d 数据库名 -E -i c:\Temp\Recovery_script.sql -x
【讨论】:
$ 评论很有帮助。谢谢【参考方案10】:对于 Windows 身份验证,请使用此 sql cmd
SQLCMD -S TestSQLServer\SQLEXPRESS -d AdventureWorks2018 -i "d:\document\sql document\script.sql"
注意:如果sql文件路径有空格,则使用“(引号)”
对于 SQL Server 身份验证,请使用此 sql cmd
SQLCMD -S TestSQLServer\SQLEXPRESS -U sa -P sasa -d AdventureWorks2018 -i "d:\document\sql document\script.sql"
-S TestSQLServer\SQLEXPRESS:这里指定SQL Server名称
-U sa: 用户名(在 SQL Server 身份验证的情况下)
-P sasa: 密码(在 SQL Server 身份验证的情况下)
-d AdventureWorks2018: 数据库名称在这里
-i "d:\document\sql document\script.sql": SQLFile的文件路径
【讨论】:
【参考方案11】:我的数据库大于 500mb,然后我使用了以下
C:\Windows>sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DATABASE -i C:\FILE.sql
它加载了包括 SP 在内的所有内容
*NB:以管理员身份运行 cmd
【讨论】:
【参考方案12】:与此处给出的大多数答案一样,使用命令行工具。在我的例子中,脚本已经有数据库创建代码。如果您的脚本包含CREATE DATABASE
命令,例如
USE [master]
GO
CREATE DATABASE [your-database-name]
那么不要使用-d your-database-name
,而是使用以下命令。
对于 Windows 身份验证,使用命令
sqlcmd -S ServerName\InstanceName -i "script.sql" -x
对于 SQL Server 身份验证,请使用命令
sqlcmd -S ServerName\InstanceName -U usename -P password -i "script.sql" -x
【讨论】:
以上是关于无法执行脚本:内存不足,无法继续执行程序的主要内容,如果未能解决你的问题,请参考以下文章
sql server 执行上100mb sql sql sql server 无法执行脚本 没有足够的内存继续执行
求问 BAT脚本如何自动执行 adb shell 以后的命令