zoukankan      html  css  js  c++  java
  • 使用存储过程备份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 = N'EXEC 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 @BackName=@BackDbName;
            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
  • 相关阅读:
    CSP2021&NOIP2021游记
    P3835[模板]可持久化平衡树【无旋Treap】
    P4688[Ynoi2016]掉进兔子洞【莫队,bitset】
    C# (CSharp) ADODB.Command示例
    求最大公约数 算法记录
    流逝时间+Windows下监测文件夹
    C# WinForm开发系列 文章索引
    09年搞笑签名
    高三班主任写给学生的一封信(在读大学的要看完)
    北京生存法则
  • 原文地址:https://www.cnblogs.com/qubernet/p/6229327.html
Copyright © 2011-2022 走看看