|
- /*--备份数据库,并按日期生成备份目录
- -- 2013 4 --*/
- /*--调用示例
- --备份当前数据库
- exec p_backupdb
- --*/
- if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
- drop procedure [dbo].[p_backupdb]
- GO
- create proc p_backupdb
- @dbname sysname='', --要备份的数据库名称,不指定则备份当前数据库
- @bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
- @bkpath nvarchar(260)='c:\' --备份文件的存放目录,在该目录下创建每天备份的目录
- as
- declare @sql varchar(8000)
- if isnull(@dbname,'')='' set @dbname=db_name()
- if right(@bkpath,1)<>'\' set @bkpath=@bkpath+'\'
- set @bkpath=@bkpath+convert(varchar,getdate(),112)+'\'
-
- --创建目录
- set @sql='md [url=mailto:]'+@bkpath[/url]
- exec master..xp_cmdshell @sql,no_output
-
- --备份处理
- if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\.BAK'
- set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
- ,'\DATE\',convert(varchar,getdate(),112))
- ,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
- set @sql='backup database [url=mailto:]'+@dbname[/url]
- +' to [url=mailto:disk=]disk='''+@bkpath+@bkfname+''''[/url]
- exec(@sql)
- go
复制代码 |
|