如要從 SQL Server 2017 遷移資料,請參閱使用備份檔案在 SQL Server 2017 和 SQL Server 適用的 Cloud SQL 間遷移資料。
如果您是系統管理員、開發人員、工程師、資料庫管理員或 DevOps 工程師,而且要將資料從 SQL Server 2008 遷移至 SQL Server 2017 適用的 Cloud SQL,或是要將 SQL Server 2008 升級至 SQL Server 2017,本教學課程將會非常實用。
本教學課程假設您擁有 SQL Server 2008 的授權,且熟悉下列項目:
- Microsoft SQL Server 2008
- Microsoft SQL Server 2017
- Microsoft PowerShell
- Cloud Storage
- Cloud SQL
目標
- 建立 SQL Server 適用的 Cloud SQL 執行個體。
- 建立 Cloud Storage bucket。
- 備份資料庫。
- 將資料庫匯入 Cloud SQL for SQL Server。
- 驗證匯入的資料。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
請確認您已為 Google Cloud 專案啟用計費功能。 瞭解如何確認您已啟用專案的計費功能。
啟用 Cloud Storage 和 Cloud SQL API。
在執行 SQL Server 2008 的伺服器上安裝及初始化 Google Cloud CLI。
前往 Google Cloud 控制台的 Cloud Shell。
Google Cloud 控制台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好適用值。工作階段可能要幾秒鐘的時間才能初始化。
建立 Cloud SQL 執行個體和 Cloud Storage 值區
在 Cloud Shell 中,建立 SQL Server 2017 Enterprise 適用的 Cloud SQL 執行個體,稍後您會將資料庫遷移至該執行個體:
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 服務據點」一文。建立 Cloud Storage bucket,在資料匯入 Cloud SQL 前儲存備份檔案:
gcloud storage buckets create "gs://bucket-name" --location=US
將
bucket-name
替換成 Cloud Storage 值區的唯一名稱。
備份資料庫
在本節中,您將連線至執行 SQL Server 2008 的 Windows 伺服器、建立資料庫備份,並將備份資料庫上傳至 Cloud Storage。
使用遠端桌面協定連線至執行 SQL Server 2008 的 Windows 伺服器。可以是主要伺服器或副本伺服器。
啟動 PowerShell 指令列工具。
在安裝 gcloud CLI 的終端機中,建立備份資料夾:
mkdir c:\backup
在備份資料夾中建立資料庫備份:
osql -E -Q "BACKUP DATABASE db-name TO DISK='c:\backup\db-name.bak'"
將
db-name
改成要遷移至 Cloud SQL 的資料庫名稱。將備份檔案複製到 Cloud Storage bucket:
$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
在 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 執行個體存取所需資源的權限。
授予服務帳戶 Cloud Storage bucket 的寫入權限:
gcloud storage buckets add-iam-policy-binding gs://bucket-name \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyBucketWriter
授予服務帳戶讀取 Cloud Storage bucket 中檔案的權限:
gcloud storage buckets add-iam-policy-binding gs://bucket-name \ --member=serviceAccount:${SVC_EMAIL_ADDRESS} \ --role=roles/storage.legacyObjectReader
將備份檔案匯入 Cloud SQL 資料庫:
gcloud beta sql import bak target \ gs://bucket-namedb-name.bak \ --database db-name
驗證資料匯入
在本節中,您將檢查資料是否成功匯入。
在 Cloud Shell 中,安裝 SQL Server 工具包:
sudo apt-get install -y mssql-tools
如果接受授權條款,請在系統提示時輸入
yes
。如要安全存取 Cloud SQL 執行個體,請下載 Cloud SQL Proxy:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
啟動 Cloud SQL Proxy:
CONNECTION_NAME=$(gcloud sql instances describe target --format='value(connectionName)') ./cloud_sql_proxy -instances=${CONNECTION_NAME}=tcp:1433 &
執行查詢,驗證一或多個資料表中的資料:
/opt/mssql-tools/bin/sqlcmd -U sqlserver -S 127.0.0.1 -Q "query-string"
將
query-string
替換為要執行的 SQL 查詢。系統提示您輸入密碼時,請輸入
sqlserver12@
密碼。
清除所用資源
如要避免付費,最簡單的方法就是刪除您針對教學課程建立的專案。 Google Cloud刪除專案
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
後續步驟
- 請參閱這篇文章,瞭解 SQL Server 適用的 Cloud SQL 客戶自行管理加密金鑰 (CMEK)。
- 瞭解如何為 SQL Server 適用的 Cloud SQL 設定私人 IP 連線。
- 探索 Google Cloud 的參考架構、圖表和最佳做法。 歡迎瀏覽我們的雲端架構中心。