--建立測試
create database db
go--正常備份
backup database db to disk='c:\1.bak' with format
backup log db to disk='c:\2.bak' with format
backup log db to disk='c:\3.bak' with format
backup database db to disk='c:\4.bak' with format
backup database db to disk='c:\5.bak' with format,differential
backup log db to disk='c:\6.bak' with format
go--下面是用於日誌備份和差異備份還原中易犯的錯誤
--1. 恢復時使用錯誤的日誌順序
if db_id('db') is not null drop database db
restore database db from disk='c:\1.bak' with norecovery
restore log db from disk='c:\3.bak'
/*--收到資訊
伺服器: 訊息 4305,級別 16,狀態 1,行 5
此備份集中的日誌開始於 lsn 6000000002800001,該 lsn 太晚,無法應用到資料庫。包含 lsn 6000000002500001 的較早的日誌備份可以還原。
--*/
go--2. 恢復時,將日誌備份應用於錯誤的完全備份
if db_id('db') is not null drop database db
restore database db from disk='c:\4.bak' with norecovery
restore log db from disk='c:\2.bak'
/*--收到錯誤資訊
伺服器: 訊息 4326,級別 16,狀態 1,行 5
此備份集中的日誌終止於 lsn 6000000002800001,該 lsn 太早,無法應用到資料庫。包含 lsn 6000000003000001 的較新的日誌備份可以還原。
--*/
go--3. 將日誌備份用於restore database
if db_id('db') is not null drop database db
restore database db from disk='c:\2.bak' with norecovery
/*--收到錯誤資訊
伺服器: 訊息 3135,級別 16,狀態 2,行 4
檔案 'c:\2.bak' 中的備份集是由 backup log 建立的,無法用於此還原操作。
--*/
go--4. 將差異備份用於restore log
if db_id('db') is not null if db_id('db') is not null drop database db
restore database db from disk='c:\4.bak' with norecovery
restore log db from disk='c:\5.bak'
/*--收到錯誤資訊
伺服器: 訊息 3135,級別 16,狀態 2,行 3
檔案 'c:\5.bak' 中的備份集是由 backup database with differential 建立的,無法用於此還原操作。
--*/
go--5. 將差異備份用於restore log
if db_id('db') is not null if db_id('db') is not null drop database db
restore database db from disk='c:\4.bak' with norecovery
restore log db from disk='c:\5.bak'
/*--收到錯誤資訊
伺服器: 訊息 3135,級別 16,狀態 2,行 3
檔案 'c:\5.bak' 中的備份集是由 backup database with differential 建立的,無法用於此還原操作。
--*/
go--6. 將差異備份用於錯誤的完全備份中
if db_id('db') is not null if db_id('db') is not null drop database db
restore database db from disk='c:\1.bak' with norecovery
restore database db from disk='c:\5.bak'
/*--收到錯誤資訊
伺服器: 訊息 3136,級別 16,狀態 1,行 3
無法將裝置 'c:\5.bak' 上的備份應用於資料庫 'db'。
--*/
go--7. 直接使用日誌備份或者差異備份還原
if db_id('db') is not null if db_id('db') is not null drop database db
restore database db from disk='c:\5.bak'
restore log db from disk='c:\2.bak'
/*--收到錯誤資訊
伺服器: 訊息 913,級別 16,狀態 8,行 3
未能找到 id 為 65535 的資料庫。可能該資料庫尚未啟用,也可能正在轉換過程中。
--*/
go--8. 還原完全備份時,未使用norecovery,導致不能正確還原日誌備份或者差異備份
if db_id('db') is not null if db_id('db') is not null drop database db
restore database db from disk='c:\1.bak'
restore log db from disk='c:\2.bak'
/*--收到錯誤資訊
伺服器: 訊息 4306,級別 16,狀態 1,行 4
先前的還原操作未指定 with norecovery 或 with standby。請在除最後步驟之外的所有其他步驟中指定 with norecovery 或 with standby 後,重新啟動該還原序列。
--*/
go--刪除測試
if db_id('db') is not null drop database db
SQL Server差異備份的備份 還原原理
記住一點 差異備份是基於最後一次完整備份的差異,而不是基於最後一次差異的差異 備份過程 1 完整備份之後有無對資料庫做過修改,如果有,記錄資料庫的最後lsn last lsn 如果完整備份之後無對資料庫做過修改,那麼差異備份就沒有意義了 2 做差異備份時根據差異位圖讀取差異頁面內容 注意 差異位圖記...
sqlserver全備份,差異備份和日誌備份
差異備份是以上乙個全備為基點,這個期間所有差異資料的備份。日誌備份是基於前乙個全備 日誌備份為基點,這個期間的事務日誌的備份。日誌備份用於確保還原資料庫到某個時間點 在利用全備 日誌備份時,需要有序並逐個還原所有日誌備份。假設要還原週六的資料,則需要上週日的全備和周一到週六的所有日誌備份才可以。如果...
資料庫完全備份和差異備份的還原操作
備份 1.完全備份 右鍵選擇資料庫 test 選擇 備份資料庫 進去 sql server備份 介面 選擇 資料庫 完全 預設 單擊 新增 選擇備份路徑 例 f 備份 test201006081545 確定 注 備份到 路徑有且僅有乙個,如果有其它備份路徑,請刪除 選擇 追加到 預設 確定 完全備份...