CREATE procedure dbo.usp_backup_database2

3
@p_dbname varchar(50),--备份数据库名称4
@p_type varchar(50),--备份类型,fullorlog5
@filename varchar(8000)='' OUTPUT6

7
as8

9
SET NOCOUNT ON10
SET DATEFIRST 111

12
DECLARE @sql varchar(8000)13
DECLARE @datetime varchar(30)14
DECLARE @path varchar(100)15

16
SET @path = 'E:\backup\sql_data\'17

18
IF @p_type='full'19
BEGIN20
SET @datetime = CONVERT(varchar(20),getdate(),20)21
SET @datetime = REPLACE(@datetime,' ','_')22
SET @datetime = 'DB_Full_'+REPLACE(@datetime,':','-')23

24
SET @filename = @datetime+'.bak'''25

26
SET @sql = 'BACKUP DATABASE ' + @p_dbname27
SET @sql = @sql + ' TO DISK = N'''+@path+@p_dbname + '\'+@filename28
SET @sql = @sql + ' WITH INIT'29
END30

31
IF @p_type='diff'32
BEGIN33
SET @datetime = 'DB_Diff_'+CAST(DATEPART ( dw , getDate()) AS char(1))34
SET @filename = @datetime+'.diff'''35
SET @sql = 'BACKUP DATABASE ' + @p_dbname36
SET @sql = @sql + ' TO DISK = N'''+@path+@p_dbname + '\'+@filename37
SET @sql = @sql + ' WITH INIT,DIFFERENTIAL'38
END39

40
IF @p_type='log'41
BEGIN42
SET @datetime = 'DB_Log_'+DATENAME ( hh , getdate() )43
SET @filename = @datetime+'.log'' '44
SET @sql = 'BACKUP LOG '+ @p_dbname45
SET @sql = @sql + ' TO DISK = N'''+@path+@p_dbname + '\'+@filename46
SET @sql = @sql + ' WITH INIT'47
END48

49

50
--SELECT @sql51

52
EXEC (@sql)53

54
SET @filename = REPLACE(@filename,'''','')55
GO