SQL备份数据库存储过程:p_BackupDB
作者:C/S框架网|www.cscode.ne  发布日期:2021/02/07 16:58:57
  SQL备份数据库存储过程:p_BackupDB



SQL Code:


/****** Object: StoredProcedure [dbo].[p_BackupDB] Script Date: 2021/2/7 16:11:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[p_BackupDB]
  
@DBNAME SYSNAME='', --要备份的数据库名称,不指定则备份当前数据库
  
@BKPATH NVARCHAR(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
  
@BKFNAME NVARCHAR(260)='',--备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
  
@BKTYPE NVARCHAR(10)='DB',--备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份
  
@APPENDFILE BIT=1 --追加/覆盖备份文件
AS
BEGIN
  
  
/****************************************************************************
  功能:备份数据库到指定目录,并写入备份日志
  
  SELECT * FROM sys_BackupHistory
  
  p_BackupDB 'DT_SysTables','G:\SQL数据库备份目录\'
  
  ****************************************************************************
*/
  
  
DECLARE @SQL VARCHAR(8000)
  
  
IF ISNULL(@DBNAME,'')='' SET @DBNAME=DB_NAME()--当前数据库
  
IF ISNULL(@BKPATH,'')='' SET @BKPATH=dbo.f_GetDBPath(NULL)
  
IF ISNULL(@BKFNAME,'')='' SET @BKFNAME='\DBNAME\_\DATE\_\TIME\.BAK'
  
  
SET @BKFNAME=REPLACE(REPLACE(REPLACE(@BKFNAME,'\DBNAME\',@DBNAME)
  ,
'\DATE\',CONVERT(VARCHAR,GETDATE(),112))
  ,
'\TIME\',REPLACE(CONVERT(VARCHAR,GETDATE(),108),':',''))
  
  
SET @SQL='BACKUP '+CASE @BKTYPE WHEN 'LOG' THEN 'LOG ' ELSE 'DATABASE ' END
  +
'['+@DBNAME+']'
  +
' TO DISK='''+@BKPATH+@BKFNAME
  +
''' WITH '+CASE @BKTYPE WHEN 'DF' THEN 'DIFFERENTIAL,' ELSE '' END
  +CASE
@APPENDFILE WHEN 1 THEN 'NOINIT' ELSE 'INIT' END
  
  
PRINT @SQL
  
EXEC(@SQL)
  
  
IF @@ERROR=0
  
BEGIN
  
PRINT '备份日志'
  
INSERT INTO dbo.sys_BackupHistory(DBName,BackupFileName,BackupPath,BackupTime) VALUES
  (
@DBNAME,@BKFNAME,@BKPATH+@BKFNAME,GETDATE())
    
END
    
    
    
    
    
END
    
GO
    
    
    
    
    
//来源:C/S框架网 | www.csframework.com | QQ:23404761




上一篇 下一篇