診斷 SQL Server 的問題

疑難排解錯誤

遷移工作程序在執行階段可能會發生錯誤。

  • 發生某些錯誤時,資料庫遷移服務會自動重試失敗的操作,繼續執行遷移程序,避免中斷。遷移工作狀態會變更為「執行中 (有錯誤)」。這個狀態表示資料庫遷移服務會繼續遷移資料,不受錯誤影響。
  • 部分錯誤無法復原。如果資料庫遷移服務發生無法復原的錯誤,遷移工作狀態會變更為「Failed」(失敗)。在這種情況下,您必須在修正問題後重新啟動遷移工作。

如要排解錯誤,請前往受影響的遷移工作,查看錯誤,並按照錯誤訊息中的步驟操作。您也可以查看 Cloud SQL 目的地執行個體的 Cloud Monitoring 記錄,取得更多詳細資料。使用遷移工作詳細資料頁面上的 Cloud Monitoring 連結。

下表列出一些問題示例和解決方法:

針對這個問題... 問題可能出在... 不如說
錯誤訊息:The BAK file's database major version number {backup_version_num} must not be higher than the current database major version number {your Cloud SQL for SQL Server version number}。 您嘗試匯入的備份檔案,來自比 SQL Server 適用的 Cloud SQL 目的地執行個體所用版本更新的 SQL Server 版本。

資料庫遷移服務僅支援從較低版本遷移至較新版本,且須符合跨版本相容性指南。請參閱「 支援的來源和目的地資料庫」。

重新建立 SQL Server 適用的 Cloud SQL 目的地執行個體,以便使用較新的 SQL Server 版本,然後以新的執行個體重新嘗試遷移程序。
錯誤訊息:The following database already exists in destination: {database_name}。 Cloud SQL 目的地執行個體中,已有資料庫與遷移工作中的資料庫同名。 請移除命名衝突。請參閱「 錯誤:目的地已有這個資料庫 」
錯誤訊息:Permission denied for {cloudsql.databases.get} on the Database Migration Service service account. 資料庫遷移服務的服務帳戶缺少權限。 將缺少的權限新增至資料庫遷移服務帳戶。請參閱「 使用 IAM 控管存取權」。
錯誤訊息: Missing WAL file at Log Sequence Number (LSN) {log_number_here} 交易記錄檔使用的 Epoch 時間戳記可能不正確,與其中包含的更新順序不符。資料庫遷移服務會使用記錄序號和 Epoch 時間戳記,控管交易記錄檔複製到 Cloud SQL 目的地執行個體的順序。 請檢查並調整最新交易記錄檔名稱中使用的 Epoch 時間戳記。請參閱「 調整錯誤的交易記錄名稱」。
如果遷移所選資料庫時,遷移工作無法將資料複製到一或多個資料庫,資料庫清單中會顯示「失敗」狀態。 各種遷移工作錯誤。

在「錯誤」欄中,按一下「查看錯誤」並修正錯誤。修正錯誤後,按一下「Restart」(重新啟動)。

錯誤:目的地已有這個資料庫

您會看到下列錯誤訊息: The following database already exists in destination: {database_name}。

問題可能在於

Cloud SQL 目的地執行個體已包含資料庫,且名稱與遷移工作中的某個資料庫相同。

試試這些建議

視遷移情境而定,您可以透過不同方式解決資料庫重複的問題。請嘗試下列任一做法:

請重新命名來源 Cloud Storage bucket,以其他名稱遷移資料庫。

資料庫遷移服務在目的地 Cloud SQL 執行個體中建立的資料庫名稱,衍生自 Cloud Storage 中儲存備份檔案的資料夾名稱。如果您有兩個名稱相同的資料庫,且兩者都需要在 Cloud SQL 目的地中,可以重新命名資料夾並重新建立遷移工作,避免名稱衝突。

請執行下列步驟:

  1. 為受命名衝突影響的來源資料庫建立新資料夾。請參閱「將備份檔案儲存在 Cloud Storage bucket 」。
  2. 重新建立遷移工作。請參閱「 建立遷移工作」。

    您可以將新資料庫新增至現有遷移工作,但無法從遷移工作中移除資料庫。因此您必須重新建立整個遷移工作。

從 SQL Server 適用的 Cloud SQL 執行個體中,捨棄重複的資料庫。

如果 Cloud SQL 目的地執行個體中的資料庫重複,您可以從執行個體中捨棄該資料庫,並繼續執行遷移工作。請參閱 SQL Server 適用的 Cloud SQL 說明文件中的「刪除資料庫」一文。


調整交易記錄檔名稱,以處理順序不正確的 WAL 檔案

問題可能在於

交易記錄檔使用的 Epoch 時間戳記可能不正確,與其中包含的更新順序不符。資料庫遷移服務會使用記錄序號和 Epoch 時間戳記,控管交易記錄檔複製到 Cloud SQL 目的地執行個體的順序。

試試這些建議

檔案上傳作業可能會延遲或順序不正確。請稍候幾分鐘,讓問題解決,或檢查 Cloud Storage bucket 是否有遺漏檔案。

如果問題仍未解決,請驗證並調整 交易記錄檔名稱中的 Epoch 時間戳記。

請執行下列步驟:

  1. 在目的地 SQL Server 適用的 Cloud SQL 執行個體,查看交易記錄匯入作業清單。前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面

  2. 依序點選「查看所有作業」 > 「查看 SQL Server 錯誤記錄檔」。
  3. 查看交易記錄檔的所有匯入作業,並確認檔案名稱是否包含正確的 Epoch 時間戳記。
  4. 如果發現近期交易記錄檔名稱的 Epoch 時間戳記順序不正確,請前往 Cloud Storage bucket 重新命名檔案。資料庫遷移服務會自動偵測變更,並嘗試匯入相關的交易記錄檔。
  5. 僅限 Amazon RDS:匯出至 S3 的過程中,可能遺漏部分交易記錄檔。請嘗試重新執行交易記錄匯出函式,匯出遺失 WAL 檔案前後期間的記錄。