【SQLserver】bat定时自动备份与恢复

03-05 阅读 0评论

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

【SQLserver】bat定时自动备份与恢复,【SQLserver】bat定时自动备份与恢复,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,操作,名称,第1张
(图片来源网络,侵删)

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

1.建立一个bat文件,命名为Abackup.bat
@echo off
%SQLcmd工具路径。如果没有SQLcmd,官网可以下载%
set path=%path%;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC0\Tools\Binn
echo 数据库备份开始
SQLcmd.exe -S ip地址 -d 需要备份的数据库名 -U sa -P 123456 -i sqlserverbackup.sql -o sqlserverbackup.out
ren sqlserverbackup.out %date:~0,4%%date:~5,2%%date:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.out
echo 数据库备份完成

名称

解释

备注

-i

调用的SQL格式文件

【SQLserver】bat定时自动备份与恢复,【SQLserver】bat定时自动备份与恢复,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,操作,名称,第2张
(图片来源网络,侵删)

-o

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

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

2.建立一个名称为sqlserverbackup,格式为sql的文件。
DECLARE @name varchar(50)
DECLARE @datetime char(14)
DECLARE @path varchar(255)
DECLARE @bakfile varchar(255)
set @name='需要备份的数据库名'
set @datetime=CONVERT(char(8),getdate(),112) + REPLACE(CONVERT(char(8),getdate(),108),':','')
set @path='备份文件保存路径'
set @bakfile=@path+''+@name+'_'+'bak_'+@datetime+'.BAK'
backup database @name to disk=@bakfile with name=@name
 
go

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

1.建立一个bat文件,名称为Brestore.bat
 @echo off
set path=%path%;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC0\Tools\Binn
echo 数据库恢复备份开始
 
SQLcmd.exe -S ip  -U sa -P 123456 -i sqlserverRestore.sql  -o sqlserverRestore.txt
 
ren sqlserverRestore.txt %date:~0,4%%date:~5,2%%date:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.txt
echo 数据库恢复备份完成
timeout /t 5
2.建立一个sqlserverRestore.sql
declare @dumpfile varchar(150)
declare @msg varchar(70)
   select @dumpfile = '备份文件路径'
   select @msg=convert(char(26),getdate(),9)
   print @msg
 
restore DATABASE 要恢复的数据库名B from disk=@dumpfile WITH REPLACE 
if (@@ERROR  0 )
begin
   select @msg=convert(char(26),getdate(),9)+'-----还原数据失败或出现异常'
   print @msg
end
else
begin
   select @msg=convert(char(26),getdate(),9)+'-----数据库还原完毕'
   print @msg
end

上述语句中:如果执行后出现报错(如图1),请在restore命令的REPLACE后面加入下面代码(用逗号分开)。这是因为数据库mdf和ldf保存路径不一致引起的,需要改为新数据库的保存路径。如果不清楚具体路径,可以先手动导入一次(见图2图3)。

【SQLserver】bat定时自动备份与恢复

图1

【SQLserver】bat定时自动备份与恢复,【SQLserver】bat定时自动备份与恢复,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,操作,名称,第4张
(图片来源网络,侵删)
【SQLserver】bat定时自动备份与恢复

图2

【SQLserver】bat定时自动备份与恢复

图3


三、结果

【SQLserver】bat定时自动备份与恢复

四、补充

如果有用户正在操作B数据库,恢复日志会失败。可以在日志文件中看到具体原因。

【SQLserver】bat定时自动备份与恢复


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]