診斷 SQL Server 的問題

排解錯誤

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

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

如要排解錯誤,請前往受影響的遷移工作,查看錯誤,然後按照錯誤訊息中的步驟操作。您也可以查看 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,但 SQL Server 適用的 Cloud SQL 目的地執行個體使用的版本較舊。

只有符合跨版本相容性指南的條件,資料庫遷移服務才支援從較舊版本遷移至較新版本。請參閱「 支援的來源和目的地資料庫」。

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

按一下「錯誤」欄中的「查看錯誤」並修正。修正錯誤後,請按一下「重新啟動」

錯誤:目的地中已有資料庫

您會看到下列錯誤訊息: 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 說明文件中的「Delete a database」(刪除資料庫) 一文。


調整交易記錄檔名稱,解決 WAL 檔案順序錯誤的問題

問題可能出在

交易記錄檔可能使用錯誤的紀元時間戳記,導致更新順序有誤。資料庫遷移服務會使用記錄序號和紀元時間戳記,控管交易記錄檔複製到 Cloud SQL 目的地執行個體的順序。

建議做法

檔案上傳作業可能會延遲或順序有誤。請等待幾分鐘,讓問題解決,或檢查 Cloud Storage bucket 中是否有遺失的檔案。

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

請按照下列步驟操作:

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

    前往 Cloud SQL 執行個體

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