激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SQL Server2019數據庫備份與還原腳本(批量備份)

SQL Server2019數據庫備份與還原腳本(批量備份)

2021-11-30 16:44遇坑分享 Sql Server

本文主要介紹了SQL Server2019數據庫備份與還原腳本,數據庫可批量備份,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言最近公司服務器到期,需要進行數據遷移,而數據庫屬于多而繁瑣,通過圖形化界面一個一個備份所需時間成本很大,所以想著寫一個sql腳本來執行。

開始

  • 數據庫單個備份
  • 數據庫批量備份
  • 數據庫還原
  • 數據庫還原報錯問題記錄
  • 總結

1.數據庫單個備份

圖形化界面備份這里就不展示了,可以自行百度,下面直接貼代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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文件到指定文件夾中,如圖

SQL Server2019數據庫備份與還原腳本(批量備份)

2.數據庫批量備份(時間有點長,請等待)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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\'

執行結果效果如下圖:

SQL Server2019數據庫備份與還原腳本(批量備份)

3.數據庫還原

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

執行后便能還原庫(我是拿這三個庫做測試,截的圖可能沒什么變化,你們可以嘗試下)

SQL Server2019數據庫備份與還原腳本(批量備份)

4.數據庫還原報錯問題記錄

當然還原的過程可能會遇到一些問題,比如:

1.版本不一樣
2.sql sql 邏輯文件'xxxxx ' 不是數據庫'yyy'的一部分。請使用 restore filelistonly 來列出邏輯文件名。

版本的話我試過了,高版本可以向下兼容,但是低版本不能向上兼容,可以統一版本來解決(如有更好的解決方案歡迎打擾)
第二個問題呢就是腳本中‘move' 他只能跟邏輯名,而有些數據庫的邏輯名并不是數據庫名稱,所以需要替換一下,

下面是查詢數據庫邏輯名的sql語句:

?
1
2
use master
restore filelistonly from disk='d:\sql201database\sence.bak'--根據自己的需求要變更路徑

如圖,

SQL Server2019數據庫備份與還原腳本(批量備份)

對于這些邏輯名與數據庫名稱不一致的情況可以單獨拿出來重新執行一下即可:

?
1
2
3
4
5
6
7
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數據庫備份與還原腳本,數據庫可批量備份內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/jierou/p/15569537.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一级在线观看视频 | 一级黄色国产视频 | 九九视频精品在线观看 | 久久精品视频免费 | 九草av| 欧美a∨亚洲欧美亚洲 | 久久不射电影 | 国产精品久久久乱弄 | 欧美成人三级视频 | 91在线视频在线观看 | 999久久国精品免费观看网站 | 亚洲免费看片网站 | 久啪视频 | 国产九色视频在线观看 | 亚洲性生活视频 | 一区二区三区欧美日韩 | av电影网在线观看 | 免费一级欧美在线观看视频 | 狠狠干夜夜操 | 国产在线一级视频 | 狠狠干视频网站 | 最新日韩精品在线观看 | 在线亚洲播放 | 国产成年人网站 | 欧美精品免费一区二区三区 | 涩涩激情网 | 在线成人免费观看 | 蜜桃视频在线免费观看 | 国产精品久久久久久238 | 超碰97国产在线 | 中国一级免费视频 | 成人不卡免费视频 | 99国产精品欲a | 日本中文字幕网址 | 亚洲精品免费播放 | 国产亚洲激情 | 91在线视频精品 | 国产乱淫av片免费 | 国产美女白浆 | 色淫湿视频 | 成人一级黄色片 |