看网上的例子写的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
总结以上是内存溢出为你收集整理的SQLSERVER备份脚本全部内容,希望文章能够帮你解决SQLSERVER备份脚本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)