用来备份数据库的存储过程

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [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
    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 + 'COMPRESSION,'
        +CASE @APPENDFILE WHEN 1 THEN 'NOINIT' ELSE 'INIT' END
    PRINT @SQL
    EXEC(@SQL)S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值