SQL备份数据库存储过程:p_BackupDB
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
/****** 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
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网