/*********************************************************************************************
Function:数据库备份(支持自动创建路径)
Author:Bean
Date:2012-09-24
*********************************************************************************************/
if OBJECT_ID('sp_backup','P') is not null drop proc sp_backup
go
create proc sp_backup
@DBName varchar(256),
@Path varchar(1024)
as
Begin
set nocount on
declare @result int, --定义变量用来判断文件是否存在
@fileName varchar(256), --备份的文件名
@crtPath varchar(1024) --创建路径
/*** 判断数据库是否存在 ***/
if not exists(select 1 from sys.databases where name =@DBName)
Begin
RaisError('Database not exists! Please check your parameters.',16,1);
return;
End
/*** 判断路径是否存在,如果不存在创建路径 ***/
--//开启 xp_cmdshell 命令
EXEC sp_configure 'show advanced options',1;reconfigure
EXEC sp_configure 'xp_cmdshell',1;reconfigure
set @crtPath='mkdir '+replace(@Path,' ','" "') --用于创建路径
EXEC xp_cmdshell @crtPath,NO_OUTPUT --创建路径(存在将不创建)
--//获取备份的名称 @DBName+yyyymmddhhmmss+.bak
set @fileName=@DBName+replace
(replace
(replace
(CONVERT(varchar, getdate(), 120 )
,'-','')
,' ','')
,':','')
+'.bak'
set @Path=@Path+'\'+@fileName
--//判断要生成的文件是否存在
exec master.dbo.xp_fileexist @Path,@result out --路径可以有空格
--//存在
if @result=1 --1:存在 0:不存在
Begin
RaisError('bak file have been exists!',16,1);
return;
End
--//不存在
Else
Begin
exec(
'backup database '+@DBName+' to disk= '''+@path+''''
)
End
End
go
sp_backup 'NB_Server','E:\MY- TEST\asdf dassaf dsa\'
(2期)数据库还原(支持自动创建路径)
最新推荐文章于 2022-11-10 10:00:10 发布