sqlserver备份还原数据库功能封装分享

SQLServer备份还原数据库功能封装分享

简介

SQL Server 是一款颇为流行的关系型数据库,支持备份还原功能。备份是指将数据库的全部或部分数据复制到磁盘或磁带上,还原则是将这些备份重新到数据库引擎中。

封装备份还原数据库功能意义在于:将复杂的备份还原过程简化,提高代码复用性和可维护性。

功能封装

备份数据库

-- 备份数据库
CREATE PROCEDURE sp_BackupDB
    @dbName nvarchar(50),
    @backupPath nvarchar(200)
AS
BEGIN
    DECLARE @backupFile nvarchar(200)
    SET @backupFile = @backupPath + '\' + @dbName + '_' + CONVERT(nvarchar(20), GETDATE(), 120) + '.bak'
    BACKUP DATABASE @dbName TO DISK = @backupFile
END

备份数据库存储过程 sp_BackupDB 接收两个参数:@dbName 数据库名,@backupPath 备份保存路径。该存储过程通过 BACKUP DATABASE 命令备份数据库,并将备份文件存储在指定路径下。

还原数据库

-- 还原数据库
CREATE PROCEDURE sp_RestoreDB
    @dbName nvarchar(50),
    @backupFile nvarchar(200)
AS
BEGIN
    DECLARE @mdfFile nvarchar(200), @ldfFile nvarchar(200)
    SET @mdfFile = @dbName + '.mdf'
    SET @ldfFile = @dbName + '_log.ldf'

    -- 杀掉占用的连接
    DECLARE @killSql nvarchar(1000)
    SET @killSql = ''
    SELECT @killSql = @killSql + 'kill ' + CONVERT(nvarchar(5), spid) + ';'
    FROM sys.sysprocesses
    WHERE dbid = db_id(@dbName)
    EXEC(@killSql)

    -- 恢复数据库
    RESTORE DATABASE @dbName FROM DISK = @backupFile
    WITH REPLACE,
    MOVE @mdfFile TO 
        (SELECT physical_name FROM sys.master_files WHERE database_id = db_id(@dbName) AND file_id = 1),
    MOVE @ldfFile TO 
        (SELECT physical_name FROM sys.master_files WHERE database_id = db_id(@dbName) AND file_id = 2)
END

还原数据库存储过程 sp_RestoreDB 接收两个参数:@dbName 数据库名,@backupFile 数据库备份文件路径。该存储过程通过 RESTORE DATABASE 命令还原数据库,并杀掉占用连接,保证还原成功。

示例说明

示例1:备份数据库

EXEC sp_BackupDB 'testDB', 'D:\backup'

该语句表示备份名为 testDB 的数据库,并将备份文件保存在 D:\backup 目录下。

示例2:还原数据库

EXEC sp_RestoreDB 'testDB', 'D:\backup\testDB_20211018091500.bak'

该语句表示还原名为 testDB 的数据库,并使用备份文件 D:\backup\testDB_20211018091500.bak 进行还原。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sqlserver备份还原数据库功能封装分享 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • asp.net(C#)生成无限级别菜单

    生成无限级别菜单是一个常见的需求,而使用ASP.NET(C#)实现无限级别菜单可以通过递归来解决。以下是实现过程的详细攻略: 创建数据库表 首先,需要在数据库中保存菜单数据,可以通过如下的SQL语句来创建一个menu数据表: CREATE TABLE [dbo].[menu]( [id] [int] IDENTITY(1,1) NOT NULL, [name…

    C# 2023年5月31日
    00
  • ASP.NET Core Razor页面用法介绍

    ASP.NET Core Razor 页面是一种基于 Razor 模板引擎的视图引擎,它可以用于创建动态 Web 页面。以下是 ASP.NET Core Razor 页面用法介绍的完整攻略: 步骤一:创建 Razor 页面 在使用 Razor 页面之前,需要创建 Razor 页面。可以在 ASP.NET Core 项目中的 Pages 文件夹中创建 Razo…

    C# 2023年5月17日
    00
  • c# 剔除sql语句’尾巴’的五种方法

    接下来我将为大家详细介绍“C#剔除SQL语句‘尾巴’的五种方法”: 一、问题描述 有时候在编写C#程序时,我们需要动态生成SQL语句。但是在动态生成SQL语句中,由于字符串拼接不当可能会导致语句的末尾出现多余的“AND”、“OR”等关键字,这就需要我们对字符串进行处理,去掉这些多余的关键字,以保证SQL语句的正确性。 下面将介绍五种方法来解决这个问题。 二、…

    C# 2023年5月15日
    00
  • .NETCore基于RabbitMQ实现延时队列的两方法

    以下是“.NETCore基于RabbitMQ实现延时队列的两方法”的完整攻略: 什么是延时队列 延时队列是一种特的消息队列,它可以在一时间后才将消息发送到消费者。延时队列通常用于实现定时任务、消息重试等功能。 基于RabbitMQ实现延时队列的两种方法 RabbitMQ是一种流行的消息队列系统,它支持延时队列。以下两种基于RabbitMQ实现延时队列的方法:…

    C# 2023年5月12日
    00
  • C#字符串常见操作总结详解

    C#字符串常见操作总结详解 本文将为您详细介绍C#中关于字符串的常见操作,包括字符串的创建、比较、连接、替换、分割、转换等操作。 字符串的创建 在C#中,字符串可以通过以下方式创建: 字符串字面量 csharpstring str1 = “hello, world”; 使用关键字new创建字符串对象 csharpstring str2 = new strin…

    C# 2023年5月15日
    00
  • C# EF Core可视化工具的使用及EF Core入门语句操作代码

    让我来详细讲解一下 “C# EF Core可视化工具的使用及EF Core入门语句操作代码” 的完整攻略。 EF Core简介 EF(Core)是一个轻量级的ORM框架,它的主要功能是将对象模型映射到关系数据库中,以及从数据库中获取和存储数据。 EF Core可视化工具的使用 EF Core可视化工具可以方便地管理 EF Core 的各种功能,比如数据库迁移…

    C# 2023年6月3日
    00
  • ASP.NET Core使用HostingStartup增强启动操作方法详解

    在ASP.NET Core中,您可以使用HostingStartup来增强应用程序的启动操作。本攻略将深入探讨如何使用HostingStartup,并提供两个示例说明。 HostingStartup HostingStartup是一个接口,它定义了一个方法Configure方法,该方法在应用程序启动时被调用。您可以使用HostingStartup来执行应用程…

    C# 2023年5月17日
    00
  • C#实现封面图片生成器的示例代码

    下面我将为你详细讲解使用C#实现封面图片生成器的完整攻略。 1. 确定需求 在实现封面图片生成器前,我们需要明确需求: 需要生成一张图片 图片需要包含标题、封面图等元素 生成的图片需要具有可定制性 2. 安装依赖项 我们需要安装以下两个依赖项: SkiaSharp:是一个开源的2D图形库,适用于各种.NET平台。该库提供了对Skia图形引擎的封装,使开发者可…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部