MsSQL   发布时间:2022-05-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sqlserver2008数据库自动备份脚本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_489_1@

CREATE proc [dbo].[usp_autoBACkupDB]

@dbname sysname=null --要备份的数据库名,不指定即为全部备份

,@path nvarchar(128)='d:\' --备份目录路径

,@BACkup_type varchar(16)='database' --备份类型,可以为database,log

,@BACkup_sysdb int=0 --是否备份系统数据库,0为不备份,1为备份

as

set nocount on;

declare @dbcnt int =0

,@sql varchar(2000)=''

,@except_db varchar(1000)=case @BACkup_sysdb 

when 0 then ''''+'master'+''''+','+'''' +'msdb'+''''+','+''''+'tempdb'+''''+','+''''+'model'+''''

when 1 then '' end;

declare @db_list table(id int identity(1,1) not null,name sysName);

declare @BACkup_err_list table(id int identity(1,name sysName);

 if right(@path,1)<>'\'

set @path=@path+'\'

if @dbname is null or @dbname in ('all','*')

begin

--将所有数据库名存到一张临时表上

set @sql='SELEct name from sys.databases where name not in ('+@except_db+');'

insert into @db_list(Name) exec(@sql);

--得到一共有多少个数据库

SELEct @dbcnt=count(1) from @db_list;

--开始循环

while @dbcnt>0

begin

--从临时表中获得最后一个数据库的名字

SELEct @dbname=name from @db_list where id=@dbcnt;

set @sql='BACkup '+@BACkup_type+' '+@dbname+' to disk='+''''+@path+@BACkup_type+'_'+@dbname+'.'+convert(varchar(8),getdate(),112)+'.'+DATename(HH,GETDATE())+''''

--开始循环备份

exec (@sql);

if @@ERROR<>0

insert into @BACkup_err_list(Name) values(@dbName);

set @dbcnt=@dbcnt-1

end

end

else

begin

set @sql='BACkup '+@BACkup_type+' '+@dbname+' to disk='+''''+@path+@BACkup_type+'_'+@dbname+'.'+convert(varchar(8),GETDATE())+''''

--仅备份一次

exec (@sql);

if @@ERROR<>0

insert into @BACkup_err_list(Name) values(@dbName);

end

if exists(SELEct * from @BACkup_err_list)

SELEct ID,name as 'BACkup_err_dbname' from @BACkup_err_list;

else print 'BACkup success';

set nocount off;

GO

大佬总结

以上是大佬教程为你收集整理的sqlserver2008数据库自动备份脚本全部内容,希望文章能够帮你解决sqlserver2008数据库自动备份脚本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: