【问题标题】:Restoring .bak file from batch file从批处理文件恢复 .bak 文件
【发布时间】:2015-01-19 15:21:15
【问题描述】:

我正在自动化测试环境设置过程,以下是所涉及的手动步骤的一部分:

  1. 将 .bak 文件从网络驱动器复制到我的 D: 驱动器
  2. 启动 SQL Management Studio,使用“恢复文件和文件组”选项恢复 .bak 文件

对于第 1 点,我使用了:

robocopy \\10.xx.xxx.x\dirA\Build\%myVar%\DB\ D:\ myDB_V%myVar%.bak

它复制得很好!

现在对于第 2 点,我正在从命令提示符使用 sqlcmd 尝试以下命令:

sqlcmd -E -S localhost\myInstance -Q "RESTORE DATABASE myDB_V2.2.2.10 FROM DISK='D:\myDB_V2.2.2.10.bak' WITH FILE = 1, MOVE 'myDB_V2.2.2.10' TO 'C:\Program Files\Microsoft SQLServer\MSSQL10.SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10.mdf', MOVE 'myDB_V2.2.2.10_log' TO 'C:\Program Files\Microsoft SQLServer\MSSQL10.SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10.mdf';"

它说

Msg 102, Level 15, State 1, Server localhost\myInstance, Line 1
Incorrect syntax near '.2'.
Msg 319, Level 15, State 1, Server localhost\myInstance, Line 1
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

我无法解释它在说什么。

谁能帮帮我?

【问题讨论】:

    标签: batch-file sqlcmd


    【解决方案1】:

    试试这个:

    sqlcmd -E -S localhost\myInstance -Q "RESTORE DATABASE 'myDB_V2.2.2.10' FROM DISK='D:\myDB_V2.2.2.10.bak' WITH FILE = 1, MOVE 'myDB_V2.2.2.10' TO 'C:\Program Files\Microsoft SQLServer\MSSQL10.SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10.mdf', MOVE 'myDB_V2.2.2.10_log' TO 'C:\Program Files\Microsoft SQLServer\MSSQL10.SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10.mdf';"
    

    【讨论】:

      【解决方案2】:

      试试这个
      sqlcmd -E -S localhost\myInstance -Q "RESTORE DATABASE [myDB_V2.2.2.10] FROM DISK='D:\myDB_V2.2.2.10.bak' WITH FILE = 1, MOVE 'myDB_V2.2.2.10' TO 'C:\Program Files\Microsoft SQLServer\MSSQL10.SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10.mdf', MOVE 'myDB_V2.2.2.10_log' TO 'C:\Program Files\Microsoft SQLServer\MSSQL10.SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10.mdf';"

      【讨论】:

        【解决方案3】:

        错误似乎与您的数据库名称“RESTORE DATABASE myDB_V2**.2**.2.10 [...]”有关。我建议不要在数据库名称中使用句点,因为句点用于分隔查询中的数据库对象。如果您已经在使用句点,请尝试将数据库名称括在方括号 [] 中。

        【讨论】:

        • 谢谢!所以我现在有这个查询:RESTORE DATABASE [myDB_V2.2.2.10] FROM DISK='D:\myDB_V2.2.2.10.bak' WITH FILE = 1, RECOVERY, REPLACE, STATS = 10, MOVE 'myDB_V2.2.2. 10'到'C:\Program Files\Microsoft SQLServer\MSSQL10.SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10.mdf',移动'myDB_V2.2.2.10_log'到'C:\Program Files\Microsoft SQLServer\MSSQL10 .SQLEXPRESS\MSSQL\DATA\myDB_V2.2.2.10_1.ldf' 它抛出以下错误:目录查找文件 mdf 和 ldf 并告诉我使用 WITH MOVE 来识别文件的有效位置。
        • 我通过更改路径名修复了它。现在恢复正常了。谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-13
        • 1970-01-01
        • 2019-12-07
        • 1970-01-01
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多