一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務器之家 - 數據庫 - Sql Server - SQL Server誤區30日談 第20天 破壞日志備份鏈之后,需要一個完整備份來重新開始日志鏈

SQL Server誤區30日談 第20天 破壞日志備份鏈之后,需要一個完整備份來重新開始日志鏈

2019-12-28 15:40MSSQL教程網 Sql Server

事務日志備份會備份自上次事務日志備份以來所有的事務日志(如果從來沒有過日志備份的話,那就從上一次完整備份開始)。有好幾種類型的操作會中斷事務日志的連續性,也就是說除非重新開始新的日志鏈,SQL Server無法再進行日

誤區 #20:在破壞日志備份鏈之后,需要一個完整備份來重新開始日志鏈 
錯誤 

事務日志備份會備份自上次事務日志備份以來所有的事務日志(如果從來沒有過日志備份的話,那就從上一次完整備份開始)。有好幾種類型的操作會中斷事務日志的連續性,也就是說除非重新開始新的日志鏈,SQL Server無法再進行日志備份。下面這幾種操作都有可能引起日志鏈斷裂: 

由完整恢復模式或大容量事務日志恢復模式轉為簡單恢復模式 
從數據庫鏡像進行恢復 
備份日志時指定了NO_LOG 或 WITH TRUNCATE_ONLY(還好在SQL Server 2008中這個選項被取消了) 

更多請看:post BACKUP LOG WITH NO_LOG - use, abuse, and undocumented trace flags to stop it

通過下面的例子對此進行闡述: 

復制代碼代碼如下:


CREATE DATABASE LogChainTest; 
GO 
ALTER DATABASE LogChainTest SET RECOVERY FULL; 
GO 
BACKUP DATABASE LogChainTest TO DISK = 'C:\SQLskills\LogChainTest.bck' WITH INIT; 
GO 
BACKUP LOG LogChainTest TO DISK = 'C:\SQLskills\LogChainTest_log1.bck' WITH INIT; 
GO 
ALTER DATABASE LogChainTest SET RECOVERY SIMPLE; 
GO 
ALTER DATABASE LogChainTest SET RECOVERY FULL; 
GO 


結果是: 

復制代碼代碼如下:


已為數據庫 'LogChainTest',文件 'LogChainTest' (位于文件 1 上)處理了 168 頁。 
已為數據庫 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)處理了 2 頁。 
BACKUP DATABASE 成功處理了 170 頁,花費 0.224 秒(5.916 MB/秒)。 
已為數據庫 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)處理了 3 頁。 
BACKUP LOG 成功處理了 3 頁,花費 0.121 秒(0.137 MB/秒)。 


我首先創建了一個數據庫,將其設置為完整恢復模式,這個是日志鏈的起點,然后轉為簡單恢復模式,再轉為完整恢復模式。 
下面我再嘗試進行日志備份 

復制代碼代碼如下:


BACKUP LOG LogChainTest TO DISK = 'C:\SQLskills\LogChainTest_log2.bck' WITH INIT; 
GO 


則會得到如下報錯信息: 

復制代碼代碼如下:


消息 4214,級別 16,狀態 1,第 1 行 
無法執行 BACKUP LOG,因為當前沒有數據庫備份。 
消息 3013,級別 16,狀態 1,第 1 行 
BACKUP LOG 正在異常終止。 


SQL Server已經記錄了我破壞日志鏈的操作以及與進行日志 備份無法備份自上次日志備份以來所有的日志,所以SQL Server不允許我進行日志備份。 
這個誤區是說此時就需要完整備份才能恢復日志鏈,但實際上,我只需要做一個差異備份(這個差異備份的跨度超過日志鏈斷裂的間隙),代碼如下: 

復制代碼代碼如下:


BACKUP DATABASE LogChainTest TO DISK = 'd:\Test_bak\LogChainTest_log1.bck' WITH INIT, DIFFERENTIAL; 
GO 
BACKUP LOG LogChainTest TO DISK = 'd:\Test_bak\LogChainTest_log1.bck' WITH INIT; 
GO 


得到的結果: 

復制代碼代碼如下:


已為數據庫 'LogChainTest',文件 'LogChainTest' (位于文件 1 上)處理了 64 頁。 
已為數據庫 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)處理了 1 頁。 
BACKUP DATABASE WITH DIFFERENTIAL 成功處理了 65 頁,花費 0.119 秒(4.267 MB/秒)。 
已為數據庫 'LogChainTest',文件 'LogChainTest_log' (位于文件 1 上)處理了 1 頁。 
BACKUP LOG 成功處理了 1 頁,花費 0.052 秒(0.150 MB/秒)。 


不得不說這種方式更Cool一些,因為你不再需要一個完整備份才能繼續進行日志備份。 
如果你的備份策略中包含了文件或是文件組的備份,你甚至只需要單個文件的差異備份就能繼續進行日志備份。但前提是這個備份的跨度超過了斷裂LSN的長度,當然這是更深的話題了。 
又揭穿了一個誤區!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久re6热在线视频 久久AV喷吹AV高潮欧美 | 51国产| 欧美日韩亚毛片免费观看 | 法国贵妇一级伦理hd | 国产精品麻豆久久99 | 范冰冰上面好大下面好紧 | 羞羞视频污 | 国产成人免费观看在线视频 | 日本肉体xxxx| 天天曰天天干 | 2022色婷婷综合久久久 | 91碰碰 | 99国产精品| 色综合久久九月婷婷色综合 | 调教女帝 | 欧美一级欧美三级 | 91亚洲专区 | 午夜神器18以下不能进免费 | 9久re热视频这里只有精品 | 出差被灌醉绝伦的上司日本 | 人人艹在线视频 | 农村妇女野战bbxxx | 999精品视频这里只有精品 | 色图大全| 40岁女人三级全黄 | 国产情侣偷国语对白 | 人人九九 | 国产一区国产二区国产三区 | 精品久久成人免费第三区 | 日本欧美不卡一区二区三区在线 | 手机在线观看精品国产片 | 欧美综合精品一区二区三区 | 波多野结衣小说 | wwwav视频| 亚洲精品有码在线观看 | 欧美猛男同志同性video | 出差被灌醉绝伦的上司日本 | 欧美日韩久久中文字幕 | 白丝美女同人18漫画 | 青青精品 | 亚洲免费国产 |