使用備份檔案在 SQL Server 2008 和 SQL Server 適用的 Cloud SQL 間遷移資料


在本教學課程中,您將學習如何將資料從 SQL Server 2008 遷移至 SQL Server 2017 Enterprise 適用的 Cloud SQL。本教學課程將說明如何從 SQL Server 2008 匯出資料、將資料匯入 SQL Server 2017 適用的 Cloud SQL,並驗證資料是否已成功匯入。

如要將資料從 SQL Server 2017 遷移,請參閱「使用備份檔案在 SQL Server 2017 和 SQL Server 適用的 Cloud SQL 間遷移資料」。

如果您是系統管理員、開發人員、工程師、資料庫管理員或開發運作工程師,而且要將資料從 SQL Server 2008 遷移至 SQL Server 2017 適用的 Cloud SQL,或要從 SQL Server 2008 升級至 SQL Server 2017,本教學課程將會非常實用。

本教學課程假設您擁有 SQL Server 2008 的授權,且熟悉下列項目:

目標

  • 建立 Cloud SQL for SQL Server 執行個體。
  • 建立 Cloud Storage bucket。
  • 備份資料庫。
  • 將資料庫匯入 SQL Server 適用的 Cloud SQL。
  • 驗證匯入的資料。

費用

In this document, you use the following billable components of Google Cloud:

To generate a cost estimate based on your projected usage, use the pricing calculator. New Google Cloud users might be eligible for a free trial.

When you finish the tasks that are described in this document, you can avoid continued billing by deleting the resources that you created. For more information, see Clean up.

事前準備

  1. 在 Google Cloud 控制台中,選取專案選擇器頁面中的 Google Cloud 專案,或建立專案。

    前往專案選取器頁面

  2. 請確認您已為 Google Cloud 專案啟用計費功能。瞭解如何確認您已啟用專案的計費功能

  3. 啟用 Cloud Storage 和 Cloud SQL API。

    啟用 API

  4. 在執行 SQL Server 2008 的伺服器上安裝並初始化 Google Cloud CLI

  5. 前往 Google Cloud 控制台的 Cloud Shell。

    前往 Cloud Shell

    Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好適用值。工作階段可能要幾秒鐘的時間才能初始化。

建立 Cloud SQL 執行個體和 Cloud Storage 值區

  1. 在 Cloud Shell 中建立 Cloud SQL for SQL Server 2017 Enterprise 執行個體,稍後將資料庫遷移至該執行個體:

    gcloud beta sql instances create target  \
        --database-version=SQLSERVER_2017_ENTERPRISE \
        --cpu=2 \
        --memory=5GB \
        --root-password=sqlserver12@ \
        --zone=us-central1-f
    

    建立執行個體可能需要幾分鐘的時間。預設的根使用者名稱為 sqlserver,預設密碼為 sqlserver12@。在本教學課程中,您會在 us-central1-f 區域中建立執行個體。如要進一步瞭解區域,請參閱 Cloud 服務據點

  2. 在將資料匯入 Cloud SQL 之前,請建立 Cloud Storage 值區來儲存備份檔案:

    gcloud storage buckets create "gs://bucket-name" --location=US
    

    bucket-name 替換為 Cloud Storage 值區的專屬名稱。

備份資料庫

在本節中,您將連線至執行 SQL Server 2008 的 Windows 伺服器,建立資料庫備份,然後將備份資料庫上傳至 Cloud Storage。

  1. 使用 RDP 連線至執行 SQL Server 2008 的 Windows 伺服器。可以是主要伺服器或複本伺服器。

  2. 啟動 PowerShell 指令列工具。

  3. 安裝 gcloud CLI 的終端機中建立備份資料夾:

    mkdir c:\backup
    
  4. 在備份資料夾中建立資料庫備份:

    osql -E -Q "BACKUP DATABASE db-name TO DISK='c:\backup\db-name.bak'"
    

    db-name 替換為您要遷移至 Cloud SQL 的資料庫名稱。

  5. 將備份檔案複製到 Cloud Storage 值區:

    $PROJECT_ID = (gcloud sql instances describe target --format='value(project)' )
    gcloud storage cp c:\backup\db-name.bak gs://bucket-name --no-clobber
    

將備份檔案匯入 Cloud SQL

  1. 在 Cloud Shell 中,擷取與 Cloud SQL 執行個體相關聯的服務帳戶,並將該帳戶儲存在變數中:

    SVC_EMAIL_ADDRESS=$(gcloud sql instances describe target \
        --format='value(serviceAccountEmailAddress)')
    echo $SVC_EMAIL_ADDRESS
    

    Google Cloud 會在您建立 Cloud SQL 執行個體時建立服務帳戶。您可以使用服務帳戶,將 Cloud SQL 執行個體的存取權授予所需資源。

  2. 授予服務帳戶寫入 Cloud Storage 值區的權限:

    gcloud storage buckets add-iam-policy-binding gs://bucket-name \
        --member=serviceAccount:${SVC_EMAIL_ADDRESS} \
        --role=roles/storage.legacyBucketWriter
    
  3. 授予服務帳戶讀取 Cloud Storage 值區中檔案的權限:

    gcloud storage buckets add-iam-policy-binding gs://bucket-name \
        --member=serviceAccount:${SVC_EMAIL_ADDRESS} \
        --role=roles/storage.legacyObjectReader
    
  4. 將備份檔案匯入 Cloud SQL 資料庫:

    gcloud beta sql import bak target \
        gs://bucket-namedb-name.bak \
        --database db-name
    

驗證資料匯入

在本節中,您將檢查資料是否已成功匯入。

  1. 在 Cloud Shell 中安裝 SQL Server 工具包

    sudo apt-get install -y mssql-tools
    

    如果您接受授權條款,請在系統提示時輸入 yes

  2. 如要安全存取 Cloud SQL 執行個體,請下載 Cloud SQL Proxy

    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  3. 啟動 Cloud SQL Proxy:

    CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)')
    ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
    
  4. 執行查詢,驗證一或多個資料表中的資料:

    /opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "query-string"
    

    query-string 替換為要執行的 SQL 查詢。

    系統提示時,請輸入 sqlserver12@ 密碼。

清除所用資源

如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的 Google Cloud 專案。

刪除專案

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

後續步驟