日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

拆分备份(还原)比较大的数据库为多个bak文件

發(fā)布時(shí)間:2023/12/4 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拆分备份(还原)比较大的数据库为多个bak文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

工作中由于個(gè)別數(shù)據(jù)庫(kù)比較大,生成的備份文件也比較大,不方便存儲(chǔ)或者轉(zhuǎn)移,可以將文件備份為多個(gè)小的bak文件。

比如一個(gè)200G的數(shù)據(jù)庫(kù),可以拆分備份為10個(gè)bak文件,則每個(gè)bak文件約在20G左右。

?

備份代碼:

/************************************************************* 拆分備份dbName數(shù)據(jù)庫(kù) ,數(shù)據(jù)庫(kù)比較大,為了方便備份,將每個(gè)備份文件拆分為多個(gè)bak文件* Time: ************************************************************/USE [master]------刪除舊數(shù)據(jù)------------------------------------------------------------- --1. xp_delete_file --優(yōu)點(diǎn):兼容性好 --缺點(diǎn):不能刪除SQL Server之外創(chuàng)建的文件,包括RAR --備注:維護(hù)計(jì)劃中的“清理維護(hù)”也是調(diào)用此 擴(kuò)展存儲(chǔ)過(guò)程 來(lái)刪除文件。 DECLARE @oldDate DATETIME SET @oldDate = GETDATE() -0 --EXECUTE MASTER.dbo.xp_delete_file -- 0, --0: 備份文件,1: 維護(hù)計(jì)劃文本報(bào)告 -- N'D:\DataBak\dbName\', --文件路徑 -- N'bak', --文件擴(kuò)展名 -- @oldDate, --在此時(shí)間之前的文件一律刪除 -- 1 --刪除子文件夾中的文件 EXEC xp_cmdshell 'rd D:\DataBak\dbName',no_output --刪除文件夾,為了清理舊備份 EXEC xp_cmdshell 'mkdir D:\DataBak\dbName',no_output --重新創(chuàng)建文件夾 DECLARE @BakCount INT DECLARE @n INT DECLARE @Sql NVARCHAR(MAX) DECLARE @FILENAME VARCHAR(500) DECLARE @DATABaseName VARCHAR(500) DECLARE @DATABakPath VARCHAR(500)SET @DATABakPath = 'D:\DataBak\' SET @BakCount = 5 --要拆分的數(shù)據(jù)庫(kù)個(gè)數(shù) SET @DATABaseName = 'dbName'SET @n = 1 SET @FILENAME = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''),' ',''),':','') + '';DECLARE @exeText VARCHAR(100)SET @exeText = 'mkdir ' + + @DATABakPath + @DATABaseName + '\' + @FILENAME --創(chuàng)建備份目錄 EXEC xp_cmdshell @exeText,no_output SET @Sql = 'BACKUP DATABASE dbName TO DISK = N''' + @DATABakPath + @DATABaseName + '\' + @FILENAME + '\' + @DATABaseName + '_' + @FILENAME + '_0.bak'''WHILE @n < @BakCount BEGINSET @Sql = @Sql + ',DISK = N''' + @DATABakPath + @DATABaseName + '\' + @FILENAME + '\' + @DATABaseName + '_' + @FILENAME + '_' + CONVERT(VARCHAR, @n) + '.bak'''SET @n = @n + 1 END EXEC (@Sql) PRINT '-----------備份' + @DATABaseName + '完成---------------------' + CONVERT(VARCHAR(100), GETDATE(), 126) + '---------------'

還原代碼:

/***還原拆分備份的文件 文件如果比較多 可以參考備份代碼 循環(huán)處理*****/RESTORE DATABASE dbName FROM DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_0.bak', DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_1.bak', DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_2.bak', DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_3.bak', DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_4.bak' WITH MOVE 'dbName' TO 'D:\SqlDataBase\dbName.mdf', MOVE 'dbName_log' TO 'D:\SqlDataBase\dbName_log.ldf',STATS = 5

?

總結(jié)

以上是生活随笔為你收集整理的拆分备份(还原)比较大的数据库为多个bak文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。