人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

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

發(fā)布日期:2022-01-30 17:09 | 文章來源:CSDN

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

開始

  • 數(shù)據(jù)庫單個備份
  • 數(shù)據(jù)庫批量備份
  • 數(shù)據(jù)庫還原
  • 數(shù)據(jù)庫還原報錯問題記錄
  • 總結(jié)

1.數(shù)據(jù)庫單個備份

圖形化界面?zhèn)浞葸@里就不展示了,可以自行百度,下面直接貼代碼

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)--入?yún)ⅲ〝?shù)據(jù)庫名)
as
begin
Declare @FileFlag varchar(50)
Set @FileFlag='C:\myfile\database\'+@FullName+'.bak'--備份到哪個路徑(C:\myfile\database\)根據(jù)自己需求來定
BackUp DataBase @FullName To Disk=@FileFlag with init--核心代碼
end
exec BackupDataProc xxx

執(zhí)行成功后便會生成一個.bak文件到指定文件夾中,如圖

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

USE MASTER
if exists(SELECT * FROM sys.types WHERE name = 'AllDatabasesNameType')
drop type AllDatabasesNameType
go
create type AllDatabasesNameType as table--自定義表類型用于存儲數(shù)據(jù)庫名稱
(
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)--入?yún)?,備份時的目標(biāo)路徑
as
begin
Declare @AllDatabasesName as AllDatabasesNameType --用于存儲系統(tǒng)中的數(shù)據(jù)庫名
Declare @i int --循環(huán)變量
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
--循環(huán)備份數(shù)據(jù)庫
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\'

執(zhí)行結(jié)果效果如下圖:

3.數(shù)據(jù)庫還原

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)--入?yún)?數(shù)據(jù)庫名稱
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'---(目標(biāo))指定數(shù)據(jù)文件路徑
Set @FileFlagLog='C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\'+@FileLogName+'.ldf'---目標(biāo))指定日志文件路徑
RESTORE DATABASE @Name --為待還原庫名
FROM DISK = @DiskName ---備份文件名
WITH MOVE @Name TO @FileFlagData, ---指定數(shù)據(jù)文件路徑
MOVE @FileLogName TO @FileFlagLog, ---指定日志文件路徑
STATS = 10, REPLACE
end
go
exec ReductionProc xxx

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

4.數(shù)據(jù)庫還原報錯問題記錄

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

1.版本不一樣
2.SQL Sql 邏輯文件'XXXXX ' 不是數(shù)據(jù)庫'YYY'的一部分。請使用 RESTORE FILELISTONLY 來列出邏輯文件名。

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

下面是查詢數(shù)據(jù)庫邏輯名的sql語句:

USE MASTER
restore filelistonly from disk='D:\sql201database\Sence.bak'--根據(jù)自己的需求要變更路徑

如圖,

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

USE MASTER --這里注意要使用MASTER,以免出現(xiàn)待還原庫被占用的情況
RESTORE DATABASE Sence --為待還原庫名
FROM DISK = 'D:\sql201database\Sence.bak' ---備份文件名
WITH MOVE 'Sence_Guangxi' TO 'D:\Database\Data\Sence.mdf', ---指定數(shù)據(jù)文件路徑
MOVE 'Sence_Guangxi_log' TO 'D:\Database\Data\Sence_log.ldf', ---指定日志文件路徑
STATS = 10, REPLACE
GO

5.總結(jié)

數(shù)據(jù)是無價的,對數(shù)據(jù)庫操作時備份是必須的。
數(shù)據(jù)是無價的,對數(shù)據(jù)庫操作時備份是必須的。
數(shù)據(jù)是無價的,對數(shù)據(jù)庫操作時備份是必須的。(重要的事說三遍)

到此這篇關(guān)于SQL Server2019數(shù)據(jù)庫備份與還原腳本,數(shù)據(jù)庫可批量備份的文章就介紹到這了,更多相關(guān)SQL Server2019數(shù)據(jù)庫備份與還原腳本,數(shù)據(jù)庫可批量備份內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部