You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何备份指定数据库?解决Bat+SQL脚本误备份全库问题

解决仅备份指定数据库Salto_Test的问题

先帮你定位核心问题:你当前用的sqlcmd命令参数搞错了,导致没有正确执行你写的SQL备份脚本,这才意外备份了服务器上所有数据库。下面一步步帮你修正:

1. 修正Bat脚本的命令参数

你现在用的-Q参数是用来直接执行引号内的SQL语句文本的,不是用来指定要运行的外部SQL脚本文件的。要执行本地的SQL脚本,得用-i参数。

修正后的Bat命令如下:

sqlcmd -S HEIST-BERG-SL\SQLEXPRESS -E -i "C:\SALTO\Automatic Backups\scripts\backupDB.sql"
PAUSE

简单解释下参数:

  • -S:指定要连接的SQL Server实例
  • -E:用Windows身份验证登录数据库
  • -i:指定要执行的SQL脚本文件路径
  • PAUSE:执行完后暂停窗口,方便你查看执行结果

2. 确认你的SQL备份脚本有效性

你提供的SQL脚本本身是没问题的,它明确指定了备份Salto_Test数据库,还自动生成带时间戳的备份文件名。如果需要,你可以加个小优化:比如用WITH INIT参数让新备份覆盖同名旧文件,或者用WITH NOINIT追加到现有备份文件里,根据你的需求调整就行。

优化后的SQL脚本示例(覆盖同名备份):

declare @datstr as varchar(100)=''
declare @currdate as datetime=getdate()
set @datstr=cast(DATEPART(YYYY,@currDate) as varchar(5))
           +right('00'+cast(DATEPART(MM,@currDate)as varchar(5)),2)
           +right('00'+cast(DATEPART(DD,@currDate)as varchar(5)),2)
           +right('00'+cast(DATEPART(HH,@currDate)as varchar(5)),2)
           +right('00'+cast(DATEPART(MINUTE,@currDate) as varchar(5)),2)
declare @path as varchar(500)='C:\SALTO\Automatic Backups\Salto_Test_db_' + @datstr +'.BAK'
backup database Salto_Test to disk= @path WITH INIT;

3. 测试验证

运行修正后的Bat脚本后,去C:\SALTO\Automatic Backups\目录下检查,应该只会生成Salto_Test数据库的备份文件,不会再出现其他库的备份了。如果执行时报错,看看Bat窗口的输出提示,常见问题比如SQL Server服务账号没有目标目录的写入权限、数据库名称拼写错误之类的,针对性调整就行。


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

火山引擎 最新活动