首页 > 数据库 >使用存储过程备份数据库

使用存储过程备份数据库

时间:2022-11-17 12:44:19浏览次数:53  
标签:存储 Return EXEC -- 备份 --------------------------- 数据库

数据库备份脚本:

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

  

思路:创建定时作业每天去调用存储过程:

EXEC SP_BackupDB  N'D:\Backup\','MyDBName','MyDBName',0,0

  

标签:存储,Return,EXEC,--,备份,---------------------------,数据库
From: https://www.cnblogs.com/soulsjie/p/16899089.html

相关文章

  • 12_Kafka高级_文件存储
    实际上能看到的就是topicName+partitionID这个文件。这个文件下有两个东西很重要。.log结尾的文件是真正存储数据的。.index是存放索引的。先看看.log文件:默认会存储7......
  • Command10,Access数据库
    我的按钮名为Command10,Access文档新建在当前目录下,代码如下PrivateSubCommand10_Click() DimcatAsADOX.Catalog Setcat=NewADOX.Cata......
  • 提示‘操作无法完成,应为文件已在SQL Server(MSSQLSERVER)中打开’,移动或删除数据库相
    移动或删除数据库相关文件时出现提示‘操作无法完成,应为文件已在SQLServer(MSSQLSERVER)中打开’ 解决方法:在开始菜单附近的搜索中搜索服务  找到SQLServer(......
  • 强烈推荐!老板再也不用担心我的数据存储了-搭建GFS
    理论优点:分布式卷具有更好的性能、高扩展性以及可靠性,而且无元服务器(存放所有目录的结构,类似书的目录,方便找到所需数据在哪个节点),某种类型的分布式卷不但支持高扩展而且,具备......
  • 使用mongodb存储fluentd 事件,报错Mongo::Auth::Unauthorized error="User admin (mech
    一、问题描述 使用fluentd的mongodb插件,将nginx的日志,存储到mongodb数据库中,配置如下: <source>@typetailpath/var/log/nginx/access.logpos_file/var/......
  • 数据库查重
    查重语句select*fromteamwhereteamIdin(selectteamIdfromteamgroupbyteamIdhavingcount(teamId)>1)select*fromteamwhereID=2groupbyIDhavin......
  • 数据库表中常用的查询实验
    实验1练习1、请查询表DEPT中所有部门的情况。select*fromdept;练习2、查询表DEPT中的部门号、部门名称两个字段的所有信息。selectdeptno,dnamefromdept;练习3、请从......
  • SQL Server 高可用(always on)配置指南之数据库侦听器及高可用
    1.简介1、参考SQLServer高可用(alwayson)配置指南之域(AD)环境搭建  ​​https://blog.51cto.com/waringid/5851856​​完成域控服务器(DomainControl,以下简称DC)2、......
  • 中间件与数据库
    一、云数据库的特征云数据库是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需付费、高可用性以及存储整合等优势。根据数据库类型一般分为关系型数据......
  • 云存储技术
    一、什么是云存储云存储就是把存储放在云上二、云存储的架构三、云存储的关键技术1、存储虚拟化技术将异构的存储映射为统一的结构2、分布式存储块存储:SAN,就是......