批处理脚本恢复SQL Server数据库时出现参数错误求助
问题排查与解决
核心问题:参数符号错误
恢复脚本中使用了全角破折号(–Q),而SQLCMD命令仅支持**半角减号(-Q)**作为参数前缀,这导致命令解析失败,触发"Unexpected argument"错误。
修正后的恢复脚本
将–Q替换为-Q,同时建议补充REPLACE参数(避免数据库已存在时的报错),修正后的脚本如下:
set SqlServer=. set DatabaseName=mydbname set Username=test set Password=test set LocalFolder=C:\backups chcp 65001 SQLCMD -S %SqlServer% -U %Username% -P %Password% -Q "RESTORE DATABASE [%DatabaseName%] FROM DISK='%LocalFolder%\test.bak' WITH REPLACE"
额外注意事项
- 确保执行脚本的账户对目标数据库拥有
RESTORE DATABASE权限 - 若目标数据库处于使用状态,需先切换为单用户模式再执行恢复,可将以下逻辑整合到批处理中:
ALTER DATABASE [%DatabaseName%] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE [%DatabaseName%] FROM DISK='%LocalFolder%\test.bak' WITH REPLACE; ALTER DATABASE [%DatabaseName%] SET MULTI_USER;
内容的提问来源于stack exchange,提问作者Steven01123581321
相关产品推荐
相关产品推荐

