【问题标题】: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

如何解决这个问题?

【问题讨论】:

标签: sql tsql sql-server-2012


【解决方案1】:

使用更节省内存的命令行工具 SQLCMD。很简单:

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

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

取自here

【讨论】:

  • 使用完整凭据,指定数据库和服务器:sqlcmd -S -U -P -d -i
  • 我收到这个问题:“INSERT 语句中的行值表达式的数量超过了允许的最大行值数 1000。”
  • 添加 -e 以获得可信连接
【解决方案2】:

如果我正确理解您的问题,您正在尝试恢复 (transact sql) xyz.sql - 数据库 + 架构。你可以试试这个对我有用的命令:

SQLCMD -U sa -i xyz.sql

【讨论】:

    【解决方案3】:

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

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

    (这是我提供的相同答案here

    【讨论】:

      【解决方案4】:

      也许对你有帮助!请参阅以下步骤。

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

      • 以管理员身份打开 cmd.exe。
      • 创建文档目录。
      • 将您的 SQL 脚本文件 (script.sql) 放入文档文件夹中。
      • 使用 sqlcmd、server-name、database-name 和 script-file-name 键入查询,如上面突出显示的查询或命令行屏幕下方。

      【讨论】:

      • 你可以添加用户名 -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
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-04-02
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多