sqlserver2008数据库自动备份脚本

sqlserver2008数据库自动备份脚本,第1张

概述CREATE proc [dbo].[usp_autoBackupDB] @dbname sysname=null --要备份的数据库名,不指定即为全部备份 ,@path nvarchar(128)='d:\' --备份目录路径 ,@backup_type varchar(16)='database' --备份类型,可以为database,log ,@backup_sysdb int=0 --是否

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数据库自动备份脚本所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1167788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存