广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQL Server2019数据库备份与还原脚本(批量备份)
  • 349
分享到

SQL Server2019数据库备份与还原脚本(批量备份)

2024-04-02 19:04:59 349人浏览 泡泡鱼
摘要

前言最近公司服务器到期,需要进行数据迁移,而数据库属于多而繁琐,通过图形化界面一个一个备份所需时间成本很大,所以想着写一个sql脚本来执行。 开始 数据库单个备份

前言最近公司服务器到期,需要进行数据迁移,而数据库属于多而繁琐,通过图形化界面一个一个备份所需时间成本很大,所以想着写一个sql脚本来执行。

开始

  • 数据库单个备份
  • 数据库批量备份
  • 数据库还原
  • 数据库还原报错问题记录
  • 总结

1.数据库单个备份

图形化界面备份这里就不展示了,可以自行百度,下面直接贴代码


USE MASTER
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )
DROP PROCEDURE BackupDataProc
Go
create proc BackupDataProc
@FullName Varchar(200)--入参(数据库名)
as
begin
Declare @FileFlag varchar(50)
Set @FileFlag='C:\myfile\database\'+@FullName+'.bak'--备份到哪个路径(C:\myfile\database\)根据自己需求来定
BackUp DataBase @FullName To Disk=@FileFlag with init--核心代码
end

exec BackupDataProc xxx

执行成功后便会生成一个.bak文件到指定文件夹中,如图

2.数据库批量备份(时间有点长,请等待)


USE MASTER
if exists(SELECT * FROM sys.types WHERE name = 'AllDatabasesNameType')
drop type AllDatabasesNameType
go
create type AllDatabasesNameType as table--自定义表类型用于存储数据库名称
(
rowNum int ,
name nvarchar(60),
filename nvarchar(300)
)
go
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[BachBackupDataProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )
DROP PROCEDURE BachBackupDataProc
go
create proc BachBackupDataProc
@filePath nvarchar(300)--入参,备份时的目标路径
as
begin
Declare @AllDatabasesName as AllDatabasesNameType --用于存储系统中的数据库名
Declare @i int --循环变量
insert into @AllDatabasesName(name,filename,rowNum) select name,filename,ROW_NUMBER() over(order by name) as rowNum from sysdatabases where name not in('master','tempdb','model','msdb') --赋值
set @i =1
--循环备份数据库
while @i <= (select COUNT(*) from @AllDatabasesName)
begin
Declare @FileFlag varchar(500)
Declare @FullName varchar(50)
Select @FullName =name from @AllDatabasesName where rowNum = @i
Set @FileFlag=@filePath+@FullName+'.bak'
BackUp DataBase @FullName To Disk=@FileFlag with init
set @i = @i + 1
end
end

exec BachBackupDataProc 'C:\myfile\database\'

执行结果效果如下图:

3.数据库还原


IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[ReductionProc]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 )
DROP PROCEDURE ReductionProc
go
create proc ReductionProc
@Name nvarchar(200)--入参 数据库名称
as
begin
Declare @DiskName nvarchar(500)
Declare @FileLogName nvarchar(100)
Declare @FileFlagData nvarchar(500)
Declare @FileFlagLog nvarchar(500)
Set @FileLogName = @Name + '_log'
Set @DiskName = 'C:\myfile\database\'+@Name+'.bak' ---(源)备份文件路径
Set @FileFlagData='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@Name+'.mdf'---(目标)指定数据文件路径
Set @FileFlagLog='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@FileLogName+'.ldf'---目标)指定日志文件路径
RESTORE DATABASE @Name --为待还原库名
FROM DISK = @DiskName ---备份文件名
WITH MOVE @Name TO @FileFlagData, ---指定数据文件路径
MOVE @FileLogName TO @FileFlagLog, ---指定日志文件路径
STATS = 10, REPLACE
end
go

exec ReductionProc xxx

执行后便能还原库(我是拿这三个库做测试,截的图可能没什么变化,你们可以尝试下)

4.数据库还原报错问题记录

当然还原的过程可能会遇到一些问题,比如:

1.版本不一样
2.SQL Sql 逻辑文件'XXXXX ' 不是数据库'YYY'的一部分。请使用 RESTORE FILELISTONLY 来列出逻辑文件名。

版本的话我试过了,高版本可以向下兼容,但是低版本不能向上兼容,可以统一版本来解决(如有更好的解决方案欢迎打扰)
第二个问题呢就是脚本中‘MOVE' 他只能跟逻辑名,而有些数据库的逻辑名并不是数据库名称,所以需要替换一下,

下面是查询数据库逻辑名的sql语句:


USE MASTER
restore filelistonly from disk='D:\sql201database\Sence.bak'--根据自己的需求要变更路径

如图,

对于这些逻辑名与数据库名称不一致的情况可以单独拿出来重新执行一下即可:


USE MASTER --这里注意要使用MASTER,以免出现待还原库被占用的情况
RESTORE DATABASE Sence --为待还原库名
FROM DISK = 'D:\sql201database\Sence.bak' ---备份文件名
WITH MOVE 'Sence_Guangxi' TO 'D:\Database\Data\Sence.mdf', ---指定数据文件路径
MOVE 'Sence_Guangxi_log' TO 'D:\Database\Data\Sence_log.ldf', ---指定日志文件路径
STATS = 10, REPLACE
GO

5.总结

数据是无价的,对数据库操作时备份是必须的。
数据是无价的,对数据库操作时备份是必须的。
数据是无价的,对数据库操作时备份是必须的。(重要的事说三遍)

到此这篇关于SQL Server2019数据库备份与还原脚本,数据库可批量备份的文章就介绍到这了,更多相关SQL Server2019数据库备份与还原脚本,数据库可批量备份内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SQL Server2019数据库备份与还原脚本(批量备份)

本文链接: https://www.lsjlt.com/news/157667.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server2019数据库备份与还原脚本(批量备份)
    前言最近公司服务器到期,需要进行数据迁移,而数据库属于多而繁琐,通过图形化界面一个一个备份所需时间成本很大,所以想着写一个sql脚本来执行。 开始 数据库单个备份 ...
    99+
    2022-11-12
  • 数据库的备份与还原系列——全备份+两增量的备份与还原
    场景:周日全备份,周一,周二增量备份,周三出现问题,数分钟后发现; 数据库的安装: yum install mariadb-server -y systemctl s...
    99+
    2022-10-18
  • SQL Server 数据库备份与还原
    1、相同SQL Server版本(2008为例)之间数据库备份与还原(1)数据库备份相同SQL Server服务器版本之间数据库的备份还原操作相对来说比较简单。首先找到需要备份的数据库实例,【右键】->...
    99+
    2022-10-18
  • shell 脚本--备份、还原mysql数据库
    备份mysql数据库#! /bin/bashBPATH=/home/backup/mysql_bakUSER="root"PASSWD="123456"HOST="192.168.1.5"DATE=$(da...
    99+
    2022-10-18
  • xtrabackup2.4 备份Precona5.6数据库,做增量备份与还原
    1、Full backuop,一定要先做:     innobackupex --defaults-file=/etc/my.cnf --user=root --passwor...
    99+
    2022-10-18
  • 数据库备份、批量备份
    数据库备份 mysqldump -uroot -p123456 -P3306 --single-transaction database_name >/data/dbname.sql.gz 注:生...
    99+
    2022-10-18
  • MySQL热备份与还原---利用mysqldump---备份脚本
    对extmail数据库进行每天01:00完全热备份,并可以完全恢复!一、先建立备份脚本,如下:vi mysql_extmail_bak.sh #!/bin/bash # Program ...
    99+
    2022-10-18
  • etcd数据库备份与还原
    1. 备份etcd 1.1 手动备份数据 etcdctl backup --data-dir /var/lib/etcd/default.etcd --backup-dir 备份目录 1.2 脚本备份数据 ...
    99+
    2022-10-18
  • PostgreSQL 数据库备份与还原
    PostgreSQL 数据库备份与还原 目录 备份 还原 栗子 备份 PostgreSQL提供的一个工具pg_dump,逻辑导出数据,生成sql文件或其他格式文件,pg_dump是一个客户端工具,可以远程或本地导出逻辑数据,恢复...
    99+
    2015-11-20
    PostgreSQL 数据库备份与还原
  • MySQL数据库全库备份及增量备份脚本
    脚本网盘链接下载。 1、全库备份脚本如下: #!/bin/bash ############### 定义默认值 ################# user='root' passwd='123.com...
    99+
    2022-10-18
  • 数据库备份周日全量+日增量备份脚本
    相信很多做运维的小伙伴都会用到mysql数据库,以下提供一个脚本与诸君分享。#!/bin/bashSCRIPT_DIR=$(dirname $0)BACKUP_DIR="/data1/mysqlb...
    99+
    2022-10-18
  • 【数据库】数据库备份与还原 Navicat Premium备份以及定时备份设置
    ✨数据库备份 数据库作为信息系统的核心担当着重要的角色。 尤其在一些对数据可靠性要求很高的行业如银行、证券、电信等,如果发生意外停机或数据丢失其损失会十分惨重。为此数据库管理员应针对具体的业务要求制定详细的数据库备份与灾难恢复策略,并通过...
    99+
    2014-12-22
    【数据库】数据库备份与还原 Navicat Premium备份以及定时备份设置
  • SQL server数据库的备份和还原
    SQL server的备份有如下三种:1、完整备份:完整备份包括对整个数据库、部分事务日志、数据库结构和文件结构的备份。它代表的是备份完成时刻的数据库。是所有备份类型的基础。 2、差异备份:是指对上一次完...
    99+
    2022-10-18
  • Cacti数据备份与还原
    一.备份1.将数据库文件导出来,执行以下命令:mysqldump -ucactiuser -pcactipw cacti > mysql123.sql     意思是:m...
    99+
    2022-10-18
  • Mongodb 数据备份与还原
    1. mongodb 数据库的备份与还原 1.1 mongodump 命令参数mongodump --helpUsage:mongodump <options> Export the conte...
    99+
    2022-10-18
  • 数据库脚本备份
    rem *******************************Code Start*****************************@echo offset "Ymd=%date:~,4%%...
    99+
    2022-10-18
  • 批量备份还原导入与导出MongoDB数据方式
    前文链接传送门 mongo数据库的安装与配置 Navicat 建立数据库连接 新建数据库 导入JavaScript文件入数据库 mongodb数据备份和还原主要分为二种,一...
    99+
    2022-11-12
  • Oracle备份、还原数据库
    备份数据库 创建备份目录(用sys账号),若已创建备份目录,此步可忽略 create directory db_bak as "D: ECIMS_DB" --查看创建的目录 select * from dba_directo...
    99+
    2018-09-04
    Oracle备份 还原数据库
  • mysql数据库怎么还原与备份
    这篇文章主要讲解了“mysql数据库怎么还原与备份”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql数据库怎么还原与备份”吧!现在开始讲述另一种数据库...
    99+
    2022-10-18
  • mysqldump批量数据脚本如何备份恢复
    不知道大家之前对类似mysqldump批量数据脚本如何备份恢复的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完mysqldump批量数据脚本如何备份恢复mysqld...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作