苏飞论坛

标题: 跟我一起学SQL 第一章 1.4 备份数据库,并按日期生成备份目录 [打印本页]

作者: session    时间: 2013-4-29 23:03
标题: 跟我一起学SQL 第一章 1.4 备份数据库,并按日期生成备份目录
  1. /*--备份数据库,并按日期生成备份目录
  2. -- 2013 4 --*/
  3. /*--调用示例
  4. --备份当前数据库
  5. exec p_backupdb
  6. --*/
  7. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
  8. drop procedure [dbo].[p_backupdb]
  9. GO
  10. create proc p_backupdb
  11. @dbname sysname='',   --要备份的数据库名称,不指定则备份当前数据库
  12. @bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
  13. @bkpath nvarchar(260)='c:\' --备份文件的存放目录,在该目录下创建每天备份的目录
  14. as
  15. declare @sql varchar(8000)
  16. if isnull(@dbname,'')='' set @dbname=db_name()
  17. if right(@bkpath,1)<>'\' set @bkpath=@bkpath+'\'
  18. set @bkpath=@bkpath+convert(varchar,getdate(),112)+'\'

  19. --创建目录
  20. set @sql='md [url=mailto:]'+@bkpath[/url]
  21. exec master..xp_cmdshell @sql,no_output

  22. --备份处理
  23. if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\.BAK'
  24. set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
  25.   ,'\DATE\',convert(varchar,getdate(),112))
  26.   ,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
  27. set @sql='backup database [url=mailto:]'+@dbname[/url]
  28.   +' to [url=mailto:disk=]disk='''+@bkpath+@bkfname+''''[/url]
  29. exec(@sql)
  30. go
复制代码

作者: 站长苏飞    时间: 2013-4-30 06:48
强烈支持楼主ing……




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4