--Description:备份指定数据到指定路径,第一次完整备份、每月1号完整备份、每周一完整,每天增量备份
--====================================
ALTER procedure [dbo].[BackupDatabase]
@DatabaseName nvarchar(50),
@BackupPath varchar(200),
@IsDelLog int --1表示删除日志
as
declare @sql nvarchar(500);declare @dateName nvarchar(50);
declare @ClareSign int;set @ClareSign=1;
set @dateName='_'+SUBSTRING(replace(CONVERT(char(10),getdate(),21),'-',''),3,6);
if(not exists(select top 1 1 from msdb.dbo.backupset where database_name=@DatabaseName))
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'f_'+@DatabaseName+@dateName+'.bak'' WITH FORMAT'
 set @ClareSign=0;
end
else if(DATEPART(DAY,getdate())=1)
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'m_'+@DatabaseName+@dateName+'.bak'' WITH FORMAT'
end
else if(DATEPART(weekday,getdate())=2)
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'w_'+@DatabaseName+@dateName+'.bak'' WITH FORMAT'
end
else
begin
 set @sql='BACKUP DATABASE '+@DatabaseName+' TO DISK='''+@BackupPath+'d_'+@DatabaseName+@dateName+'.bak'' WITH differential'
 set @ClareSign=0;
end
exec (@sql)
--清除日志
if(@@ERROR=0 and @ClareSign=1 and @IsDelLog=1)
begin
 --简单模式
 exec('ALTER DATABASE '+@DatabaseName +' SET RECOVERY SIMPLE WITH NO_WAIT;ALTER DATABASE '+@DatabaseName +' SET RECOVERY SIMPLE')
 insert into ToolsDB.dbo.TestLog(LogName,Remark) values('备份日志测试',GETDATE())
 declare @FileName nvarchar(50)
 if OBJECT_ID('tempdb.dbo.##bt5') is not null drop table ##bt5 --清除全局临时表
 exec('select name into ##bt5 from '+@DatabaseName+'.dbo.sysfiles where groupid=0')
 declare cursor_name cursor for
 select name from ##bt5
 open cursor_name
 fetch next from cursor_name into @FileName
 while(@@FETCH_STATUS=0)
 begin
 exec('use '+@DatabaseName+' DBCC SHRINKFILE (N'''+@FileName+''' ,1, TRUNCATEONLY)')
 fetch next from cursor_name into @FileName
 end
 close cursor_name
 deallocate cursor_name
 
 --还原为完全模式
 exec('ALTER DATABASE '+ @DatabaseName+' SET RECOVERY FULL WITH NO_WAIT;ALTER DATABASE '+ @DatabaseName+' SET RECOVERY FULL')
 if OBJECT_ID('tempdb.dbo.##bt5') is not null drop table ##bt5 --清除全局临时表
end

最新文章

  1. prototype.js源码
  2. e.stopPropagation();与 e.preventDefault();
  3. JavaScript 上万关键字瞬间匹配——借助Hash表快速匹配
  4. Arrays.asList方法总结
  5. PICT实现组合测试用例(一)
  6. SPRING IN ACTION 第4版笔记-第八章Advanced Spring MVC-006-Pizza例子的支付流程
  7. python笔记之提取网页中的超链接
  8. JAVA学习第一课(初识JAVA)
  9. hone hone clock人体时钟
  10. Algorithm --> 字符串中最长不重合子串长度
  11. POJ-1679 The Unique MST---判断最小生成树是否唯一
  12. 【Java基础】【12String类】
  13. cdh启动datanode报错
  14. Python全栈学习_day011作业
  15. Python基础(5)——函数
  16. Win7下VB6.0不能加载mscomctl.ocx的解决办法
  17. Beta阶段冲刺-1
  18. 删除ORACLE目录OCI.dll文件无法删除 (转)
  19. display属性的表格布局相关属性
  20. UVALive-3887 Slim Span (kruskal)

热门文章

  1. UML 之 数据流图(DFD)
  2. Hadoop内部的限流机制
  3. Linux高性能server编程——多线程编程(下)
  4. python学习笔记之函数(方法)
  5. iOS自定义从底部弹上来的View
  6. JavaScript-自制日历控件(只选择年月)
  7. imageNamed 、imageWithContentsOfFile、 initWithContentsFile区别
  8. RHCE7 -- systemctl命令
  9. RHEL7 - 从命令行管理文件
  10. Linux内核(13) - 子系统的初始化之以PCI子系统为例