共用方式為


針對 SQL Server 受控備份至 Azure 進行疑難解答

本主題描述您可以用來解決在 SQL Server 受控備份到 Microsoft Azure 的作業期間,可能發生錯誤的工作和工具。

概觀

SQL Server Managed Backup to Microsoft Azure 已內建檢查和疑難排解功能,因此在許多情況下,內部故障會由 SQL Server Managed Backup to Microsoft Azure 的過程自行處理。

其中一個案例的範例是刪除備份文件,導致記錄鏈結中斷,因而影響復原能力 - SQL Server 受控備份至 Microsoft Azure 會識別記錄鏈結中的中斷,並排程立即進行備份。 不過,我們建議您監視狀態,並解決任何需要手動介入的錯誤。

SQL Server 受控備份至 Microsoft Azure 使用系統預存程序、系統檢視和擴充事件來記錄事件和錯誤。 系統檢視和預存程序提供 SQL Server 受控備份至 Microsoft Azure 的組態資訊、備份排程的狀態,以及擴充事件擷取的錯誤。 SQL Server Managed Backup to Microsoft Azure 會使用擴充事件來擷取要用於疑難解答的錯誤。 除了記錄事件之外,SQL Server Smart Admin Policies 還提供用於電子郵件通知作業的健康狀態,以便通知錯誤和問題。 如需詳細資訊,請參閱 監視 SQL Server 受控備份至 Azure

SQL Server Managed Backup to Microsoft Azure 也會使用與手動備份到 Azure 儲存體時相同的記錄("SQL Server Backup to URL")。 如需備份至 URL 相關問題的詳細資訊,請參閱 SQL Server 備份至 URL 最佳做法和疑難解答中的疑難解答一節

一般疑難排解步驟

  1. 啟用電子郵件通知以開始接收錯誤和警告的電子郵件。

    或者,您也可以定期執行 smart_admin.fn_get_health_status 來檢查匯總的錯誤和計數。 例如,number_of_invalid_credential_errors 是智慧備份嘗試備份但因憑證無效而報錯的次數。 Number_of_backup_loopsnumber_of_retention_loops 不是錯誤,但表示備份線程和保留線程掃描資料庫清單的次數。 一般而言,當@begin_time和@end_time未提供時,函式會顯示過去 30 分鐘的資訊,因此我們通常應該會看到這兩個欄的非零值。 如果它們為零,則表示系統多載,甚至系統沒有回應。 如需詳細資訊,請參閱本主題稍後的 疑難解答系統問題 一節。

  2. 檢閱擴充事件記錄檔,以深入瞭解錯誤和其他相關事件的詳細數據。

  3. 使用記錄中的資訊來解決問題。 如果發生系統問題或錯誤,您可能需要重新啟動服務或 SQL Server Agent。

錯誤的常見原因

以下是導致失敗的常見原因清單:

  1. SQL 認證變更: 如果 SQL Server 受控備份用來Microsoft Azure 所使用的認證名稱已變更或已刪除,SQL Server 受控備份至 Microsoft Azure 將無法進行備份。 變更應套用至 SQL Server 受控備份至 Microsoft Azure 的組態設定。

  2. 儲存體存取金鑰值的變更: 如果 Azure 帳戶的記憶體金鑰值已變更,但 SQL 認證不會以新的值更新,SQL Server 受控備份至 Microsoft Azure 在向記憶體進行驗證時將會失敗,而且無法備份設定為使用此帳戶的資料庫。

  3. Azure 記憶體帳戶的變更: 刪除或重新命名記憶體帳戶,而不需對 SQL 認證進行對應的變更,會導致 SQL Server 受控備份Microsoft Azure 失敗,而且不會採取任何備份。 如果您刪除記憶體帳戶,請確定資料庫會以有效的記憶體帳戶資訊重新設定。 如果儲存體帳戶已重新命名或密鑰值變更,請確定這些變更會反映在 SQL Server 受控備份用來Microsoft Azure 的 SQL 認證中。

  4. 資料庫屬性的變更: 復原模式的變更或變更名稱可能會導致備份失敗。

  5. 恢復模式的變更: 如果資料庫的恢復模式從完整或大量記錄變更為簡單,備份將會停止,且 SQL Server 受控備份至 Microsoft Azure 會略過此資料庫。 如需詳細資訊,請參閱 SQL Server 受控備份至 Azure:互作性和共存性

最常見的錯誤訊息和解決方案

  1. 啟用或設定 SQL Server 受控備份以Microsoft Azure 時發生錯誤:

    錯誤:「無法存取記憶體 URL...」提供有效的 SQL 認證...:您可能會看到這個和參考 SQL 認證的其他類似錯誤。 在這種情況下,請檢閱您提供的 SQL 認證名稱,以及儲存在 SQL 認證中的資訊 - 記憶體帳戶名稱,以及記憶體存取金鑰,並確定它們是最新且有效的。

    錯誤:“...無法設定資料庫...。因為它是系統資料庫」:如果您嘗試為系統資料庫啟用 SQL Server 受控備份來Microsoft Azure,您將會看到此錯誤。 SQL Server 受控備份至 Microsoft Azure 不支援系統資料庫的備份。 若要設定系統資料庫的備份,請使用其他 SQL Server 備份技術,例如維護計劃。

    錯誤:“ ...提供保留期間...:如果您在第一次設定這些值時未指定資料庫或實例的保留期間,您可能會看到有關保留期間的錯誤。 如果您提供介於 1 到 30 之間的數位以外的值,也可能會看到錯誤。 保留期間允許的值是介於 1 到 30 之間的數位。

  2. 電子郵件通知錯誤:

    錯誤:「未啟用 Database Mail...」- 如果您啟用電子郵件通知,但未在 實例上設定 Database Mail,您將會看到此錯誤。 您必須在執行個體上設定 Database Mail,以便能接收通知,了解 SQL Server 管理備份至 Microsoft Azure 的健康情況狀態。 如需如何啟用資料庫郵件的資訊,請參閱 設定Database Mail。 您也必須啟用 SQL Server Agent,才能使用 Database Mail 進行通知。 如需詳細資訊,請參閱 開始之前

    以下是您可能會看到與電子郵件通知相關聯的錯誤號碼清單:

    • ErrorNumber:45209

    • ErrorNumber:45210

    • ErrorNumber:45211

  3. 線上錯誤:

    • 與 SQL 連線相關的錯誤: 當連接 SQL Server 實例時發生這些錯誤。 擴充事件會透過系統管理通道公開這些類型的錯誤。 以下是您可能會在這類連線問題相關的錯誤時看到兩個擴充事件:

      具有事件類型 (event_type) = SqlError 的 FileRetentionAdminXEvent。 如需此錯誤的詳細數據,請參閱該事件的error_code、error_message和stack_trace。 error_code是 SqlException 的錯誤號碼。

      SmartBackupAdminXevent 具有下列訊息/訊息前置詞:

      「將 SQL Server 受控備份設定為 Azure 預設設定實例時發生內部錯誤。 錯誤可能是暫時性的。

      「可能遇到 SQL Server 的連線問題。 略過目前迭代中的資料庫。

      「查詢記錄使用量信息失敗。 失敗可能是暫時性的。 略過目前迭代中的資料庫。

      「載入 SSMBackup2WA 代理程式元數據時遇到的 SQL 例外狀況。 失敗可能是暫時性的。 將會重試操作。

      “SSMBackup2WA 在 ... 時遇到 SQL 例外狀況。"

    • 線上到記憶體帳戶時發生錯誤:

      在 FileRetentionAdminXEvent 中報告記憶體例外狀況,event_type = XstoreError。 如需錯誤的詳細資訊,請參閱該事件的錯誤訊息和堆疊追蹤。

      由於 SQL Server 受控備份使用基礎備份至 URL 技術,因此與記憶體連線相關的錯誤適用於這兩項功能。 如需疑難解答步驟的詳細資訊,請參閱 SQL Server 備份至 URL 最佳做法和疑難解答一文的疑難解答一節

針對系統問題進行疑難解答

以下是當系統發生問題(SQL Server、SQL Server Agent)及其對 SQL Server 受控備份至 Microsoft Azure 的影響時,以下是一些案例:

  • 當 SQL Server 受控備份執行Microsoft Azure 時,Sqlservr.exe 停止回應或停止運作: 如果 SQL Server 停止運作,SQL Agent 會正常關閉、SQL Server 受控備份至 Microsoft Azure 也會停止,而且事件會記錄在 SQL Agent.out 檔案中。

    如果 SQL Server 停止回應,則會在系統管理通道中記錄事件。 事件記錄檔的範例:

    SQL 錯誤 (引擎未回應或獲得 SQLException:SQLException:
    錯誤碼、訊息和 stacktrace 將會顯示在系統管理通道 xevent 中,以及一些額外的資訊,例如 :
    「可能遇到 SQL Server 的連線問題。 略過目前迭代中的資料庫

  • 當 SQL Server 受控備份到 Microsoft Azure 時,SQL Agent 會停止回應或停止運作:

    如果 SQL Agent 停止運作,SQL Server 受控備份至 Microsoft Azure 也會停止,且事件會記錄在管理通道中。 這類似於 SQL Server 停止回應時的案例。

    如果 SQL Agent 停止回應,SQL Server 受控備份至 Microsoft Azure 將無法繼續備份作業,而且事件會記錄在系統管理通道中。 事件記錄檔的範例:

    作業停止回應:請參閱系統管理通道 xevents
    資料庫備份的時數超過 “ + Constants.DBBackupInfoMsgMaxWaitTime + ” 小時,尚未從 SQL Server 收到進度更新。 SSM 雲端備份將繼續等候。

如果您已啟用電子郵件通知,您會收到通知,其中包含 備份循環數目保留循環數目。 如果這兩個數據行之一或兩個數據行之通知中傳回的值為零,可能是表示系統沒有回應。

警告

產生報告結果的內部進程會假設引擎診斷記錄位於 SQL Agent 錯誤記錄檔的相同位置,而 SQL Agent 錯誤記錄檔預設位於與 SQL Server 實例錯誤記錄檔相同的資料夾中。 如果引擎診斷記錄已移至 SQL Agent 錯誤記錄檔位置以外的位置,系統就無法找到智慧備份診斷記錄,因此電子郵件通知中的報告可能不正確。 例如,您可能會在報告的所有欄位中看到 值 0 ,包括備份循環數目和保留循環數目。 在此情況下,診斷記錄會移至不同的位置,可能不表示系統沒有回應,但系統找不到記錄。 請確定診斷記錄和 SQL Agent 錯誤記錄檔的位置會先位於相同的位置。 若要確認診斷記錄的目前位置,您可以使用 sys.dm_os_server_diagnostics_log_configurationspath 欄會傳回引擎診斷記錄的目前位置。 它應該位於與 SQL Agent 錯誤記錄檔相同的資料夾中。 您可以使用 dbo.sp_get_sqlagent_properties 預存程式取得 SQL Agent 錯誤記錄檔路徑。

請檢查擴充事件記錄檔,以查看錯誤的詳細數據。 修正錯誤,或重新啟動 SQL Server Agent 以更正情況。