暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【SQLserver】bat定时自动备份与恢复【测试未成功】

巴韭特锁螺丝 2023-06-29
40

项目需求:定时备份A数据库,然后恢复到B数据库。

一、BAT备份数据库(使用SQLcmd.exe)

1.建立一个bat文件,命名为Abackup.bat

  1. @echo off

  2. %SQLcmd工具路径。如果没有SQLcmd,官网可以下载%

  3. set path=%path%;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn

  4. echo 数据库备份开始

  5. SQLcmd.exe -S ip地址 -d 需要备份的数据库名 -U sa -P 123456 -i sqlserverbackup.sql -o sqlserverbackup.out

  6. ren sqlserverbackup.out %date:~0,4%%date:~5,2%%date:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.out

  7. echo 数据库备份完成


名称

解释

备注

-i

调用的SQL格式文件


-o

生成的日志文件,格式为out也可以是txt,怎么方便怎么来。

注:-o命令生成的日志不支持重命名,每次执行完成后都会覆盖上一次执行日志。为了后续维护方便,可以使用ren命令重命名out文件。(即第6行)

2.建立一个名称为sqlserverbackup,格式为sql的文件。

  1. DECLARE @name varchar(50)

  2. DECLARE @datetime char(14)

  3. DECLARE @path varchar(255)

  4. DECLARE @bakfile varchar(255)

  5. set @name='需要备份的数据库名'

  6. set @datetime=CONVERT(char(8),getdate(),112) + REPLACE(CONVERT(char(8),getdate(),108),':','')

  7. set @path='备份文件保存路径'

  8. set @bakfile=@path+''+@name+'_'+'bak_'+@datetime+'.BAK'

  9. backup database @name to disk=@bakfile with name=@name


  10. go




二、BAT恢复数据库(使用SQLcmd.exe)

1.建立一个bat文件,名称为Brestore.bat

  1. @echo off

  2. set path=%path%;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn

  3. echo 数据库恢复备份开始


  4. SQLcmd.exe -S ip -U sa -P 123456 -i sqlserverRestore.sql -o sqlserverRestore.txt


  5. ren sqlserverRestore.txt %date:~0,4%%date:~5,2%%date:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.txt

  6. echo 数据库恢复备份完成

  7. timeout t 5


2.建立一个sqlserverRestore.sql

  1. declare @dumpfile varchar(150)

  2. declare @msg varchar(70)

  3. select @dumpfile = '备份文件路径'

  4. select @msg=convert(char(26),getdate(),9)

  5. print @msg


  6. restore DATABASE 要恢复的数据库名B from disk=@dumpfile WITH REPLACE

  7. if (@@ERROR <> 0 )

  8. begin

  9. select @msg=convert(char(26),getdate(),9)+'-----还原数据失败或出现异常'

  10. print @msg

  11. end

  12. else

  13. begin

  14. select @msg=convert(char(26),getdate(),9)+'-----数据库还原完毕'

  15. print @msg

  16. end


文章转载自巴韭特锁螺丝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论