加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_镇江站长网 (https://www.0511zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql server 类型自动判断和条件检查的备份脚本 - MSSQL教程

发布时间:2014-03-08 12:45:05 所属栏目:MsSql教程 来源:站长网
导读:根据自己环境自定义了一个备份脚本! 说明: 使用方法:exec master.dbo.fullbackup1 's:backup','suzhou','full' 0.备份类型只能是full、diff或log,数据库名不

 BEGIN

   SET @ErrorMessage = '服务器上不存在指定的盘符:'+upper(substring (@CheckDirectory,1,1)+ CHAR(13) + CHAR(10))

   RAISERROR (@ErrorMessage,16,1) WITH NOWAIT

   SET @Error = @@ERROR

   return

END

--判断是否输入备份数据库名

IF @dbname IS NULL OR @dbname = ''

 BEGIN

   SET @ErrorMessage = '未输 入任何备份数据库名.' + CHAR(13) + CHAR(10)+'备份进程已终止!'

   RAISERROR(@ErrorMessage,16,1) WITH NOWAIT

   SET @Error = @@ERROR

   return

 END

else if (@dbname='tempdb' or @dbname='TEMPDB')

begin

SET @ErrorMessage = '临时数据库不需要备份.' + CHAR(13) + CHAR(10)+'备份进 程已终止!'

   RAISERROR(@ErrorMessage,16,1) WITH NOWAIT

   SET @Error = @@ERROR

   return

end

else if (@dbname  in ( select name from sys.databases where state_desc='OFFLINE' or state_desc='offline'))

begin

SET @ErrorMessage = '脱机的数据库'+@dbname+'不需要备份.' + CHAR(13) + CHAR(10)+'备份进程已终止!'

   RAISERROR(@ErrorMessage,16,1) WITH NOWAIT

   SET @Error = @@ERROR

   return

end

--判断输入类型

if  @backuptype not in ('full','diff','log')

begin

print '#########################严重警告###############严重警告 #################################'

print '不支持类型 '+@backuptype+'!   只能输入(full:完全备份; diff:差异备份; log:日志备 份)                        '

print '有问题请联系ocpyang!'

print '#########################严重警告###############严重警告 ###################################'

return

end

--判断目录是否存在

SET @backupPath2=@backupPath+''+@dbname

INSERT INTO @DirTree(subdirectory, depth)

EXEC master.sys.xp_dirtree @backupPath

IF NOT EXISTS (SELECT 1 FROM @DirTree WHERE subdirectory = @DBName)

begin

print '系统将新建目录:'+@backupPath2+' ............'

  EXEC master.dbo.xp_create_subdir @backupPath2

  print '目 录:'+@backupPath2+'新建成功!'

  print '         '

  delete from  @DirTree

end

else

begin

print '--------------------------------------------------------------------- -- '

print '目录:'+@backupPath2+'已经存在!'

print '                                                                        '+char(13)+'备份运行中 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$'

print '------------------------------- ---------------------------------------- '

delete from  @DirTree

end

--开始完全备份

if @backuptype='full'

begin

print '............................................................................ .'

print '开始完全备份.....请稍等'

print '............................................................................ .'

--隐藏检查目录

set @backupPath3=@backupPath2+''+'full'

INSERT INTO @DirTree(subdirectory, depth)

EXEC master.sys.xp_dirtree @backupPath3

IF NOT EXISTS (SELECT 1 FROM @DirTree WHERE subdirectory = @backupPath3)

EXEC master.dbo.xp_create_subdir @backupPath3

delete from @DirTree

set @FullPath = @backuppath3+''+@dbname+'_'+@backuptype+'_'+replace (replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+ '.bak'

backup database @dbname to disk=@FullPath

WITH buffercount = 20, maxtransfersize = 2097152 ,

COMPRESSION,RETAINDAYS=15,NOFORMAT,NOINIT,

NAME=N'完整备份 ',SKIP,NOREWIND,

NOUNLOAD,STATS=10

set @backtype='D'

set @backupdesc='完全备份'

set @backupfilename=@FullPath

insert into msdb.dbo.backuphistory

(dbname,backtype,lastbackup,backupdesc,backupfilename)

values(@dbname, @backtype,GETDATE(), @backupdesc,@backupfilename)

   SET @Error = @@ERROR

   if @Error !=0

   begin

   SET @ErrorMessage = '数据库'+@dbname+'完全备份未顺利完成 !: ' + CHAR(13) + CHAR(10)

   RAISERROR(@ErrorMessage,16,1) WITH NOWAIT

   return

   end

 

print '                                                                    '

print '------------------------------------------------------- ---------------- '

print @dbname+'完全备份 '+@FullPath+' 已经完 成!'

print '---------------------------------------------------------- ------------- '

return

end

--开始差异备份

else if @backuptype='diff'

begin

print '                                                                             '

(编辑:应用网_镇江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读