You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移时恢复多个BAK文件遇SQL语法错误求助

修复SQL恢复语句生成脚本的语法错误

原脚本的问题集中在字符串拼接的单引号转义错误、变量引用方式错误以及路径书写错误,以下是修正后的完整脚本:

DECLARE @datapath VARCHAR(512)
SET @Datapath = 'C:\Program Files\Microsoft SQL Server\MSSQL14\MSSQL\DATA\'

SELECT 'USE master; RESTORE Database [' + DBName + '] FROM DISK = ''' + 'C:\SQLBackup\' + DBName + '.bak''' + 
' WITH FILE = 1, MOVE N''' + DBName + '_DATA''' + ' TO ''' + @datapath + DBName + '_DATA.mdf'', 
MOVE N''' + DBName + '_LOG''' + ' TO ''' + @datapath + DBName + '_LOG.ldf'', NOUNLOAD, STATS = 5;'
FROM
    (SELECT db.name AS DBName
     FROM sys.databases db
     WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb')) D

错误点说明:

  • 路径缺失反斜杠:原脚本中备份路径写为C:SQLBackup\,正确应为C:\SQLBackup\,否则会被解析为当前盘符下的SQLBackup文件夹,而非C盘根目录
  • 变量引用错误:原脚本中直接将@datapath写在字符串内('' @datapath''),无法正确解析变量值,需要用''' + @datapath + '''的方式将变量值拼接到生成的语句中
  • 单引号转义混乱:SQL中字符串内的单引号需要用两个单引号转义,原脚本在MOVE子句的对象名和目标路径部分,单引号的数量和位置错误,导致语法解析失败
  • 多余的引号和空格:原SELECT语句末尾的' ';属于多余的引号拼接,导致整体字符串语法不完整,触发Incorrect syntax near 'D'错误

执行修正后的脚本后,会生成正确的数据库恢复语句,可直接复制执行完成迁移。

内容的提问来源于stack exchange,提问作者BEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:12:17