使用存储过程备份SqlServer数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用存储过程备份SqlServer数据库相关的知识,希望对你有一定的参考价值。

存储过程代码如下所示:

CREATE PROCEDURE [dbo].[SP_BackupDB]
(
    @BackPath NVARCHAR(200),                    --备份路径,如:D:\Backup\
    @BackDbName NVARCHAR(50),                   --需要备份的数据库名称
    @BackName NVARCHAR(50)=@BackDbName OUTPUT,  --备份后的数据库名称,不需要.bak后缀。若不传,则等同于@BackDbName
    @BackPathIsDate BIT=1,                      --备份路径是否需要添加日期文件夹,默认添加
    @BackNameIsTime BIT=1                       --备份后的数据库名称是否需要追加当前时间,默认追加
)
AS
BEGIN  

    IF(@BackPathIsDate=1)
        BEGIN
            SET @BackPath=@BackPath + CONVERT(VARCHAR, GETDATE(), 112) +\;
        END

    ---------------------------创建文件夹 Begin---------------------------
    DECLARE @FolderSQL NVARCHAR(MAX),
        @Return INT= 0;
  
    SET @FolderSQL = NEXEC sp_configure ‘‘show advanced options‘‘,1 
    RECONFIGURE WITH OVERRIDE;
      
    EXEC sp_configure ‘‘xp_cmdshell‘‘,1 
    RECONFIGURE WITH OVERRIDE;
  
    EXEC @Return=xp_cmdshell ‘‘mkdir  + @BackPath
        + ‘‘‘,NO_OUTPUT   --调用DOS命令创建文件夹;
  
    EXEC sp_configure ‘‘xp_cmdshell‘‘, 0 
    RECONFIGURE WITH OVERRIDE;
  
    EXEC sys.sp_configure N‘‘show advanced options‘‘, N‘‘0‘‘
    RECONFIGURE WITH OVERRIDE;
    ;  
    --PRINT @FolderSQL;  

    EXEC sp_executesql @FolderSQL, N@Return INT OUTPUT, @Return OUTPUT;  
    --SELECT  @Return;   

    --PRINT @Return
    ---------------------------创建文件夹 End---------------------------

    ---------------------------备份数据库 Begin---------------------------
    DECLARE @NowTime VARCHAR(100);
    DECLARE @BackUpName VARCHAR(100);

    SET @NowTime=CONVERT(VARCHAR, GETDATE(), 112)+REPLACE(CONVERT(VARCHAR, GETDATE(), 108),:,‘‘);

    /*
    IF(LEN(@BackName)<=0)
        BEGIN
            SET @[email protected];
        END
    */

    IF(@BackNameIsTime=1)
        BEGIN
            SET @BackName=@BackName +_+ @NowTime;
        END
    SET @BackName=@BackName+.bak;

    SET @BackUpName=@BackPath + @BackName;

    BACKUP DATABASE @BackDbName
    TO DISK=@BackUpName
    WITH INIT;
    ---------------------------备份数据库 End---------------------------

    SELECT @BackName BackName,@BackPath BackPath,@BackPath + @BackName FullBackName;

END

GO

 

以上是关于使用存储过程备份SqlServer数据库的主要内容,如果未能解决你的问题,请参考以下文章

mssql sqlserver 自动备份存储过程的方法分享

SQL Server 2014存储过程的备份和还原

Java调用SQL Server的存储过程详解(转)

怎样用SQL语句恢复SQLSERVER数据库备份,并覆盖现有(正在使用)数

sqlserver怎么导出数据库

sql server数据库备份失败