SQL Server Managed Backup 到 Azure 的疑難排解
本主題描述可用來針對在 SQL Server Microsoft Azure 的受控備份作業期間可能發生的錯誤進行疑難排解的工作和工具。
概觀
SQL Server Microsoft Azure 的受控備份內建檢查和疑難排解,因此在許多情況下,SQL Server受控備份至 Microsoft Azure 程式本身會處理內部失敗。
這類案例的範例是刪除備份檔案,導致記錄鏈結中斷而影響復原性 - SQL Server受控備份至 Microsoft Azure 會識別記錄鏈結中的中斷,並排程立即進行備份。 不過,建議您監視狀態及處理需要手動介入的所有錯誤。
SQL Server Microsoft Azure 的受控備份會使用系統預存程式、系統檢視和擴充事件來記錄事件和錯誤。 系統檢視和預存程式提供SQL Server受控備份至 Microsoft Azure 組態資訊、備份排程備份的狀態,以及擴充事件所擷取的錯誤。 SQL Server Microsoft Azure 的受控備份會使用擴充事件來擷取要用於疑難排解的錯誤。 刪除記錄事件之外,SQL Server Smart Admin 原則會提供電子郵件通知工作所使用的健康情況,以提供通知或錯誤與問題。 如需詳細資訊,請參閱監視SQL Server受控備份至 Azure。
SQL Server Microsoft Azure 的受控備份也會使用手動備份至 Azure 儲存體時所使用的相同記錄, (SQL Server備份至 URL) 。 如需備份至 URL 相關問題的詳細資訊,請參閱SQL Server備份至 URL 最佳做法和疑難排解中的疑難排解一節
一般疑難排解步驟
啟用電子郵件通知,開始接收錯誤和警告的電子郵件。
此外,您也可以定期執行
smart_admin.fn_get_health_status
,藉以檢查彙總錯誤和計數。 例如,number_of_invalid_credential_errors
是智慧型備份嘗試備份,但卻得到無效認證錯誤的次數。Number_of_backup_loops
和number_of_retention_loops
不是錯誤;他們會指出備份執行緒與保留執行緒掃描資料庫清單的次數。 一般而言,當 未提供 和 @end_time 時 @begin_time ,函式會顯示過去 30 分鐘的資訊,因此我們通常應該會看到這兩個數據行的非零值。 若出現零值,有可能是系統過載或甚至是系統無回應。 如需詳細資訊,請參閱本主題稍後的 針對系統問題進行疑難排解 一節。檢閱擴充事件記錄,了解錯誤和其他相關事件的詳細資料。
使用此記錄中的資訊解決問題。 當系統發生問題或錯誤時,可能必須重新啟動服務或 SQL Server Agent。
錯誤常見原因
下列清單是導致失敗的常見原因:
SQL 認證變更:如果SQL Server受控備份至 Microsoft Azure 所使用的認證名稱已變更或已刪除,SQL Server受控備份至 Microsoft Azure 將無法進行備份。 此變更應套用至SQL Server受控備份至 Microsoft Azure 組態設定。
儲存體存取金鑰值的變更:如果 Azure 帳戶的儲存體金鑰值已變更,但 SQL 認證不會以新的值更新,SQL Server向 Microsoft Azure 進行受控備份時,驗證至儲存體時將會失敗,而且無法備份設定為使用此帳戶的資料庫。
Azure 儲存體帳戶的變更:刪除或重新命名儲存體帳戶,而不需對 SQL 認證進行對應的變更,會導致SQL Server受控備份至 Microsoft Azure 失敗,且不會進行備份。 如果您刪除儲存體帳戶,請務必為資料庫重新設定有效的儲存體帳戶資訊。 如果儲存體帳戶已重新命名或金鑰值變更,請確定這些變更會反映在 Microsoft Azure SQL Server受控備份所使用的 SQL 認證中。
資料庫屬性的變更: 變更復原模式或變更名稱可能會導致備份失敗。
復原模式的變更:如果資料庫的復原模式從完整或大容量日誌變更為簡單,備份將會停止,而且SQL Server受控備份至 Microsoft Azure 會略過資料庫。 如需詳細資訊,請參閱SQL Server受控備份至 Azure:互通性和共存性
最常見的錯誤訊息和解決方案
啟用或設定SQL Server受控備份至 Microsoft Azure 時發生錯誤:
錯誤:「無法存取儲存體 URL...」提供有效的 SQL 認證...:您可能會看到這個和參考 SQL 認證的其他類似錯誤。 在這種情況下,請檢閱您提供的 SQL 認證名稱,以及儲存在 SQL 認證 - 儲存體帳戶名稱和儲存體存取金鑰中的資訊,並確定它們目前且有效。
錯誤:「...無法設定資料庫...。因為它是系統資料庫」:如果您嘗試為系統資料庫啟用SQL Server受控備份至 Microsoft Azure,您將會看到此錯誤。 SQL Server受控備份至 Microsoft Azure 不支援系統資料庫的備份。 若要設定系統資料庫的備份,請使用其他 SQL Server 備份技術 (例如維護計劃)。
錯誤:「 ...提供保留期間...:如果您在第一次設定這些值時未指定資料庫或實例的保留期間,您可能會看到有關保留期間的錯誤。 如果您提供的值不是 1 到 30 之間的數字,也可能會看到錯誤。 保留期限的允許值是 1 到 30 之間的數字。
電子郵件通知錯誤:
錯誤:「Database Mail未啟用...- 如果您啟用電子郵件通知,但實例上未設定Database Mail,您將會看到此錯誤。 您必須在 實例上設定Database Mail,才能接收SQL Server受控備份至 Microsoft Azure 的健康情況狀態通知。 如需如何啟用資料庫郵件的資訊,請參閱設定Database Mail。 您也必須啟用 SQL Server Agent 以使用 Database Mail 進行通知。 如需詳細資訊,請參閱 開始之前。
下列清單列出和電子郵件通知相關的錯誤號碼:
ErrorNumber:45209
ErrorNumber: 45210
錯誤號碼:45211
連線錯誤:
與 SQL 連線相關的錯誤:連線到 SQL Server 實例時發生這些錯誤。 擴充的事件會透過管理通道公開這些錯誤類型。 以下是您可能會看到與此種連接問題相關之錯誤的兩個擴充事件:
FileRetentionAdminXEvent,且 event_type = SqlError。 如需有關此錯誤的詳細資料,請參閱該事件的 error_code、error_message 和 stack_trace。 error_code是 SqlException 的錯誤號碼。
具有下列訊息/訊息前置詞的 SmartBackupAdminXevent:
「設定SQL Server受控備份至 Azure 的預設設定時發生內部錯誤。 錯誤可能為暫時性」。
「可能會發生 SQL Server 連線問題。 正在略過目前反覆運算中的資料庫」。
「查詢記錄檔使用量資訊失敗。 失敗可能為暫時性。 正在略過目前反覆運算中的資料庫」。
「當載入 SSMBackup2WA 代理程式中繼資料時發生 SQL 例外狀況。 失敗可能為暫時性。 作業將會重試」。
「SSMBackup2WA 在 ..."
連接至儲存體帳戶時發生錯誤:
FileRetentionAdminXEvent 中回報了儲存體例外狀況,且 event_type = XstoreError。 如需有關此錯誤的詳細資料,請參閱該事件的 error_message 和 stack_trace。
因為 SQL Server Managed Backup 會使用基礎的「備份至 URL」技術,所以與儲存體連接相關的錯誤適用於這兩項功能。 如需疑難排解步驟的詳細資訊,請參閱SQL Server備份至 URL 最佳做法和疑難排解一文的疑難排解一節。
疑難排解系統問題
以下是系統 (SQL Server發生問題時,SQL Server Agent) 及其對 Microsoft Azure SQL Server受控備份的影響:
Sqlservr.exe停止回應或停止執行 Microsoft Azure SQL Server受控備份時停止運作:如果SQL Server停止運作,SQL Agent 會正常關閉,SQL Server受控備份至 Microsoft Azure 也會停止,而且事件會記錄在 SQL Agent.out 檔案中。
如果 SQL Server 停止回應,事件會記錄到管理通道。 以下是事件記錄檔的範例:
SQL 錯誤 (引擎無回應或收到 sqlException:SqlException:
錯誤碼、訊息和堆疊追蹤在管理通道中會顯示成 xevent,外加一些額外的資訊,例如:
「可能會發生 SQL Server 連線問題。 正在略過目前反覆運算中的資料庫」當 Microsoft Azure 的受控備份SQL Server執行時,SQL Agent 會停止回應或停止運作:
如果 SQL Agent 停止運作,SQL Server Microsoft Azure 的受控備份也會停止,而且事件會記錄在系統管理通道中。 這與 SQL Server 停止回應的案例類似。
如果 SQL Agent 停止回應,SQL Server受控備份至 Microsoft Azure 將無法繼續進行備份作業,而且事件會記錄在系統管理通道中。 以下是事件記錄檔的範例:
作業停止回應:請參閱管理通道的 xevent
「尚未從SQL Server收到進度更新,超過資料庫備份的 「 + Constants.DBBackupInfoMsgMaxWaitTime + 」 小時。 SSM 雲端備份將繼續等候」。
如果您已啟用電子郵件通知,您會收到包含 備份迴圈數目 和 保留迴圈數目的通知。 如果通知中這兩個資料行的傳回值有一個或兩者皆為零,可能表示系統無回應。
警告
產生報表結果的內部處理序會假設引擎診斷記錄位於 SQL 代理程式錯誤記錄檔的相同位置,此位置預設位在與 SQL Server 執行個體的錯誤記錄檔相同的資料夾。 如果引擎診斷記錄移到非 SQL 代理程式錯誤記錄檔位置的其他位置,系統就會找不到智慧型備份診斷記錄,因此電子郵件通知中的報表可能會不正確。 例如,您可能會在報告的所有欄位中看到 值 0 ,包括備份迴圈數目和保留迴圈數目。 在診斷記錄移至不同位置的這個情況下,可能不表示系統不回應,而是系統找不到記錄。 請先確定診斷記錄的位置和 SQL 代理程式錯誤記錄檔位於相同的位置。 若要確認診斷記錄的目前位置,您可以使用 sys.dm_os_server_diagnostics_log_configurations。 資料 path
行會傳回引擎診斷記錄的目前位置。 它應該位於與 SQL Agent 錯誤記錄檔相同的資料夾中。 您可以使用 dbo.sp_get_sqlagent_properties
預存程序取得 SQL 代理程式錯誤記錄檔路徑。
請查看擴充事件記錄中有關錯誤的詳細資料。 修正錯誤或重新啟動 SQL Server Agent,以更正狀態。