微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLSERVER备份脚本

看网上的例子写的sqlserver数据库备份脚本,这个脚本不是很好,不能删除以前备份的。

declare @CurrentDataBaseName nvarchar(100)

declare @CurrentBackFolder nvarchar(200)

declare @WeekDay VARCHAR(20)

declare @CurrentBackString nvarchar(2000)

declare @day VARCHAR(20)

--SELECT GETDATE() AS 'Current Date'

set @day=convert(varchar(100),getdate(),112)

set @WeekDay = DATEPART(WEEKDAY,GETDATE())

set @CurrentBackFolder='D:\Test'

--set @CurrentDataBaseName='ceshi'

--+convert(varchar(50),112),dbid

--select * from   master..sysdatabases   where   dbid>=7

--weekday 1 表示星期日

if @WeekDay = '1'

begin

declare tb cursor local for select name from master..sysdatabases where   dbid>=7;

open tb

fetch next from tb into @CurrentDataBaseName

while @@fetch_status=0

begin

set @CurrentBackString='

    USE [master]

BACKUP DATABASE ['+@CurrentDataBaseName+']  TO disK = '''+@CurrentBackFolder+'\'+@CurrentDataBaseName+'.bak'' WITH NOFORMAT,NOINIT,NAME='''+@CurrentDataBaseName+'-'+@day+''',SKIP,norEWIND,NOUNLOAD;';

print @CurrentBackString;

exec sp_executesql @CurrentBackString;

print '备份数据库'+@CurrentDataBaseName +'完成';

fetch next from tb into @CurrentDataBaseName

end

close tb

deallocate tb

print '备份所有数据库完成'

end

else

begin

declare tb cursor local for select name from master..sysdatabases where   dbid>=7;

open tb

fetch next from tb into @CurrentDataBaseName

while @@fetch_status=0

begin

set @CurrentBackString='

    USE [master]

BACKUP DATABASE ['+@CurrentDataBaseName+']  TO disK = '''+@CurrentBackFolder+'\'+@CurrentDataBaseName+'.bak'' WITH NOFORMAT,NAME='''+@CurrentDataBaseName+'-'+@day+'-diff'',DIFFERENTIAL,

norEWIND,NOUNLOAD,RETAINDAYS=6;';

print @CurrentBackString;

exec sp_executesql @CurrentBackString;

print '差异备份数据库'+@CurrentDataBaseName +'完成';

fetch next from tb into @CurrentDataBaseName

end

close tb

deallocate tb

print '差异备份所有数据库完成'

end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐