无法执行脚本:内存不足,无法继续执行程序


Answers:


122

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

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

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

取自这里


23
使用完整的凭据,指定数据库和服务器:sqlcmd -S <您的服务器> -U <您的用户> -P <您的密码> -d <您的数据库> -i <您的SQL-FILE-PATH.sql >
a4bike

1
我遇到这个问题:“ INSERT语句中的行值表达式的数量超过了允许的最大1000行值。”
克里斯蒂安·弗雷德

3
添加-e可信任的连接
smurtagh

33

可能对您有帮助!请参阅以下步骤。

sqlcmd -S服务器名称-d数据库名称-i script.sql

  • 以管理员身份打开cmd.exe。
  • 创建文档目录。
  • 将您的SQL脚本文件(script.sql)放在documents文件夹中。
  • 像上面突出显示的查询或下面的命令行屏幕一样,使用sqlcmd,服务器名,数据库名和脚本文件名键入查询。

在此处输入图片说明


您可以使用用户名-sa和密码-123,sqlcmd -S viaserver -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql
Anil Singh,

11

您也可以在服务器属性中简单地增加“每个查询的最小内存”值。要编辑此设置,请右键单击服务器名称,然后选择属性>内存选项卡。

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

(这是我在这里提供的答案)


9

对于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的文件路径


5

如果我正确理解了您的问题,则您正在尝试还原(事务sql)xyz.sql-数据库+架构。您可以尝试以下对我有用的命令:

SQLCMD -U sa -i xyz.sql

4

我的数据库大于500mb,然后使用了以下内容

C:\Windows>sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DATABASE -i C:\FILE.sql

它加载了包括SP在内的所有内容

* NB:以管理员身份运行cmd


2

有时,由于脚本和数据的大小,我们会遇到此类错误。服务器需要足够的内存来执行并给出结果。我们可以简单地增加每个查询的内存大小。

您只需要转到sql server属性>“内存”选项卡(左侧)>现在,设置要添加的最大内存限制。

另外,在顶部有一个选项“ Results to text”,与“ Results to grid”选项相比,它消耗更少的内存,我们也可以将Result to Text转换为更少的内存执行量。


2

下面的脚本运行完美:

sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x

症状:

当使用sqlcmd实用工具执行恢复脚本时,文件'file_name.sql'中的命令'X'附近的XYZ行处的'Sqlcmd:错误:语法错误。遇到错误。

原因:

这是sqlcmd实用程序的限制。如果SQL脚本包含任何形式的美元符号($),则该实用程序将无法正确执行该脚本,因为默认情况下它将自动替换所有变量。

解析度:

为了执行带有任何形式的美元符号的脚本,必须在命令行中添加“ -x”参数。

例如

原始文件: sqlcmd -s服务器名-d数据库名-E -ic:\ Temp \ Recovery_script.sql

固定: sqlcmd -s服务器名称-d数据库名称-E -ic:\ Temp \ Recovery_script.sql -x


$评论非常有帮助。感谢
Pale Ale

1

sqlcmd -S mamxxxxxmu \ sqlserverr -U sa -P x1123 -d QLDB -i D:\ qldbscript.sql

  • 以管理员身份运行时打开命令提示符

  • 输入以上命令

“ mamxxxxxmu”是计算机名称“ sqlserverr”是服务器名称“ sa”是服务器名称“ x1123”是服务器密码“ QLDB”是数据库名称“ D:\ qldbscript.sql”是要在数据库中执行的sql脚本文件


1

试试这个步骤

1)打开PowerShell

2)写这个命令:

sqlcmd -S PCNAME\SQLEXPRESS -U user -P password -d databanse_name -i C:\script.sql

3)按回车键

:-)

在此处输入图片说明


1

如果在开发过程中需要连接到LocalDB,则可以使用:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.