原文地址:https://dzone.com/articles/how-to-create-backup-job-automatically-in-sql-serv
原文作者: Priyanka Chauhan
本文概述了找出SQL備份文件是否已損壞、自動(dòng)執(zhí)行備份過(guò)程的不同方法,以及測(cè)試和避免此問(wèn)題的一些提示。
1. 介紹
作為一個(gè)優(yōu)秀的DBA,備份數(shù)據(jù)至關(guān)重要。但有時(shí)候,我們有備份,備份也已損壞。如果這種情況發(fā)生在關(guān)鍵場(chǎng)景中,則可能會(huì)因?yàn)檫@個(gè)失誤而被解雇。
本文介紹了找出SQL備份文件是否損壞的不同方法,自動(dòng)執(zhí)行備份過(guò)程,以及測(cè)試和避免此問(wèn)題的一些建議。
2. 開(kāi)始
我們從簡(jiǎn)單的備份開(kāi)始。
簡(jiǎn)單備份的語(yǔ)法如下:
BACKUP DATABASE [AdventureWorks2019] TO DISK = N'C:\backups\AdventureWorks2019.bak' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2019-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
Go
T-SQL命令在C盤(pán)和備份文件夾中備份名為“AdventureWorks2019”的數(shù)據(jù)庫(kù)。該文件的名稱(chēng)是AdventureWorks2019。
有幾種類(lèi)型的備份。全量備份指的是所有數(shù)據(jù)的完整備份。備份完整狀態(tài)和當(dāng)前狀態(tài)之間的差異的差異備份、文件組備份(僅備份特定文件組)、鏡像備份(獲取備份副本)。
要獲取有關(guān)備份類(lèi)型的更多信息,請(qǐng)參閱此鏈接SQLServer備份概覽。
通常,如果備份失敗,將無(wú)法生成備份。通過(guò)點(diǎn)擊SSMS,UI中的"內(nèi)容"按鈕,可以查看文件內(nèi)的所有可用備份:

點(diǎn)擊內(nèi)容后,可看到:備份類(lèi)型、SQL Server、用戶(hù)名、日期、LSN(日志序列號(hào))等更多信息。

以下查詢(xún)?cè)试S查看可用的備份:
select * from msdb.dbo.backupmediafamily
查詢(xún)結(jié)果

以上查詢(xún)結(jié)果可以獲取媒體集ID、系列ID和物理設(shè)備名稱(chēng)。有關(guān)系統(tǒng)備份介質(zhì)系列的詳細(xì)信息,請(qǐng)參閱此鏈接備份媒體集(T-SQL)。
如果要查看備份集,可以使用以下語(yǔ)句查詢(xún)。
select * from msdb.dbo.backupset
該查詢(xún)將提供備份集ID、備份集ID、媒體集ID、第一個(gè)序列號(hào)以及與備份集相關(guān)的詳細(xì)信息。

有關(guān)dbo.backupset的詳細(xì)信息,請(qǐng)參閱此鏈接備份集(T-SQL)。
自動(dòng)創(chuàng)建備份任務(wù),可使用SSMS,然后右鍵單擊數(shù)據(jù)庫(kù)并選擇"備份"選項(xiàng)。

這是一個(gè)不錯(cuò)的選擇,將操作腳本腳本化到任務(wù)中,然后自動(dòng)創(chuàng)建任務(wù)。

如果要查看備份是否已成功執(zhí)行,則需要檢查任務(wù)歷史記錄。在SQLServer任務(wù)中,右鍵單擊并選擇"查看歷史記錄"選項(xiàng)。

日志文件查看器將顯示備份中是否有故障,并且您將在備份過(guò)程中找到它是否已損壞。

當(dāng)備份損壞時(shí)會(huì)有相應(yīng)的報(bào)錯(cuò)日志,其中最常見(jiàn)的就是SQLServer錯(cuò)誤823,此報(bào)錯(cuò)的詳細(xì)信息如下:

此錯(cuò)誤消息與導(dǎo)致I/O請(qǐng)求中出現(xiàn)的硬件或驅(qū)動(dòng)程序中問(wèn)題有關(guān)。
使用DBCC CHECKDB 命令時(shí),可能會(huì)看到以上錯(cuò)誤。當(dāng)我們要檢查數(shù)據(jù)庫(kù)的邏輯和物理完整性時(shí),DBCC CHECKDB命令相關(guān)的具體情況如下:
DBCC CHECKDB
該命令不一定顯示錯(cuò)誤消息。
所以我們可以檢查事件查看器。事件查看器的顯示來(lái)自Windows(包括 SQL Server 等應(yīng)用程序)的大量事件、錯(cuò)誤信息。

事件查看器包含"Windows日志"和"應(yīng)用程序"部分,用于查看與SQLServer相關(guān)的錯(cuò)誤。我們可以在這兒找到與損壞的文件相關(guān)的信息。

如果有多條消息,則可以選擇過(guò)濾當(dāng)前日志,幫助我們找到與問(wèn)題相關(guān)的消息。

我們可以按記錄的時(shí)間(過(guò)去 12 小時(shí)內(nèi)的事件、過(guò)去一小時(shí)的事件、過(guò)去 24 小時(shí)的事件、任何時(shí)間等)、按級(jí)別(嚴(yán)重、錯(cuò)誤、警告、信息和詳細(xì))進(jìn)行篩選。還可以選擇類(lèi)別,關(guān)鍵字、用戶(hù)和計(jì)算機(jī)。

通常,錯(cuò)誤消息可能與以下內(nèi)容類(lèi)似:
驅(qū)動(dòng)程序在事件日志中檢測(cè)到磁盤(pán)源報(bào)告的\Device\Harddisk4\DR4上的控制器錯(cuò)誤。
還可以檢查以啟用Trace標(biāo)志818,以獲取與I/O錯(cuò)誤相關(guān)的詳細(xì)信息。啟用跟蹤標(biāo)志818的命令如下:
DBCC TRACEON (818,-1);
有關(guān)TRACE標(biāo)志的詳細(xì)信息,請(qǐng)參閱以下相關(guān)鏈接。
DBCC TRACEON - Trace Flags (Transact-SQL)
最后,可以通過(guò)檢查SQL錯(cuò)誤日志找到與損壞的SQL備份文件相關(guān)的更多信息。也可以在SSMS中看到SQLServer日志,即點(diǎn)擊管理->SQL服務(wù)器日志

錯(cuò)誤日志方便我們查看和檢查與SQLServer相關(guān)的錯(cuò)誤。包括損壞的SQLServer備份文件。
還可以選擇搜索和篩選特定的錯(cuò)誤消息,以隔離系統(tǒng)中要查找的錯(cuò)誤。

錯(cuò)誤日志允許我們查看和檢查與SQL Server相關(guān)的錯(cuò)誤。包括損壞的 SQL Server 備份文件。
您可以選擇搜索和篩選特定的錯(cuò)誤消息,以隔離系統(tǒng)中要查找的錯(cuò)誤。
要查看其他錯(cuò)誤,請(qǐng)參閱以下鏈接:
常見(jiàn) SQL 數(shù)據(jù)庫(kù)損壞錯(cuò)誤、原因和解決方法
若要驗(yàn)證備份是否正常工作,可以在測(cè)試服務(wù)器中測(cè)試備份。
我們建議創(chuàng)建一個(gè)要備份的作業(yè),然后在測(cè)試環(huán)境中還原數(shù)據(jù)庫(kù),以確保備份工作正常。
另一種測(cè)試方法是使用VERIFYONLY允許僅驗(yàn)證備份而不還原它。
RESTORE VERIFYONLY FROM DISK = C:\backups\AdventureWorks2019.bak
GO
3. 如果備份已損壞該怎么辦
一種選擇是在備份損壞時(shí)嚎啕大哭并尋找新工作。但是,另一個(gè)更聰明的選擇是借助SQL恢復(fù)軟件。從這里SQL SERVER的恒星修復(fù)可查看微軟MVP Grant Fritchey的評(píng)論。
4. 結(jié)論
在本文中,我們驗(yàn)證了一些系統(tǒng)表,以檢查和驗(yàn)證SQLServer 中的數(shù)據(jù)庫(kù)備份。還學(xué)習(xí)了如何創(chuàng)建備份,如何自動(dòng)執(zhí)行備份,最后,我們看到了如何檢查自動(dòng)備份的狀態(tài)。我們?cè)趥浞葸^(guò)程中看到了可能出現(xiàn)的不同錯(cuò)誤,以及在何處進(jìn)行驗(yàn)證、如何驗(yàn)證。有多種方法可以檢查錯(cuò)誤,例如作業(yè)歷史記錄、事件查看器和SQL錯(cuò)誤日志。最后,如果備份已損壞,我們可以尋求另一種解決方案。




