將 Microsoft SQL Server 資料載入 BigQuery

注意:如要取得支援或提供這項功能的意見回饋,請傳送電子郵件至 dts-preview-support@google.com。

如要排定從 Microsoft SQL Server 到 BigQuery 的週期性資料移轉作業,您可以建立移轉設定,指定要移轉的資料物件,以及排定資料移轉作業的頻率。設定移轉設定後,BigQuery 資料移轉服務會按照指定的時間表,將最新資料移轉至 BigQuery 資料表。

如要瞭解 Microsoft SQL Server 移轉作業的運作方式,請參閱「Microsoft SQL Server 資料移轉簡介」。

限制

Microsoft SQL Server 資料移轉工作須遵守下列限制:

  • Microsoft SQL Server 資料庫可同時連線的數量有限。因此,同時移轉至單一 Microsoft SQL Server 資料庫的執行作業數量也有限制。請確認並行傳輸工作數量少於 Microsoft SQL Server 資料庫支援的並行連線數量上限。
  • 部分 Microsoft SQL Server 資料類型可能會對應至 BigQuery 中的 STRING 類型,以避免資料遺失。舉例來說,Microsoft SQL Server 中未定義有效位數和小數位數的特定數值類型,可能會對應至 BigQuery 中的 STRING。詳情請參閱「資料類型對應」。

增量移轉作業限制

Microsoft SQL Server 遞增移轉作業有下列限制:

  • 浮水印欄只能選擇 TIMESTAMP 欄。
  • 只有具備有效浮水印資料欄的資產,才支援增量擷取。
  • 基準欄中的值必須單調遞增。
  • 增量轉移作業無法同步處理來源表格中的刪除作業。
  • 單一移轉設定只能支援增量或完整擷取。
  • 首次執行增量擷取後,您就無法更新 asset 清單中的物件。
  • 首次執行增量擷取後,您就無法變更移轉設定中的寫入模式。
  • 首次執行增量擷取後,就無法變更基準值資料欄或主鍵。
  • 目的地 BigQuery 資料表會使用提供的 主鍵進行分群,並受限於分群資料表限制。
  • 首次將現有移轉設定更新為增量擷取模式時,更新後的第一次資料移轉會從資料來源移轉所有可用資料。後續的任何增量資料移轉作業,都只會從資料來源移轉新的和更新的資料列。
  • 建議您在基準欄建立索引。這個連結器會在增量轉移中,使用水位線資料欄做為篩選器,因此為這些資料欄建立索引可提升效能。
  • 進行增量移轉時,您必須使用更新的資料類型對應。

事前準備

如要排定 Microsoft SQL Server 資料移轉作業,請務必先完成下列前置作業。

Microsoft SQL Server 必要條件

您必須在 Microsoft SQL Server 資料庫中建立使用者帳戶。詳情請參閱「建立具有登入權限的使用者」。

BigQuery 必要條件

必要的角色

如要取得建立 Microsoft SQL Server 資料移轉作業所需的權限,請要求管理員在專案中授予您 BigQuery 管理員 (roles/bigquery.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備建立 Microsoft SQL Server 資料移轉作業所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要建立 Microsoft SQL Server 資料移轉作業,必須具備下列權限:

  • bigquery.transfers.update
  • bigquery.datasets.get

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

網路設定

如果 Microsoft SQL Server 資料庫連線沒有公開 IP 位址,您必須設定特定網路。詳情請參閱下列各節:

設定 Microsoft SQL Server 資料移轉作業

選取下列選項之一:

控制台

  1. 前往「資料轉移」頁面。

    前往「資料轉移」頁面

  2. 按一下「建立轉移作業」。

  3. 在「Source type」(來源類型) 部分,「Source」(來源) 請選取「Microsoft SQL Server」。

  4. 在「Data source details」(資料來源詳細資料) 部分執行下列操作:

    • 在「Network attachment」(網路連結) 部分選取現有的網路連結,或是點選「Create Network Attachment」(建立網路連結)。
    • 在「Host」(主機) 部分,輸入 Microsoft SQL Server 資料庫的主機名稱或 IP 位址。
    • 在「Port number」(通訊埠編號) 中,輸入 Microsoft SQL Server 資料庫的通訊埠編號。
    • 在「Database name」(資料庫名稱) 部分,輸入 Microsoft SQL Server 資料庫的名稱。
    • 在「Username」(使用者名稱) 部分,輸入要建立 Microsoft SQL Server 資料庫連線的使用者名稱。
    • 在「Password」(密碼) 部分,輸入 Microsoft SQL Server 使用者的密碼,該使用者會啟動 Microsoft SQL Server 資料庫連線。
    • 在「TLS Mode」(TLS 模式) 中,從選單選取一個選項。如要進一步瞭解 TLS 模式,請參閱「TLS 設定」。
    • 在「Trusted PEM Certificate」(信任的 PEM 憑證) 欄位中,輸入核發資料庫伺服器 TLS 憑證的憑證授權單位 (CA) 公開憑證。詳情請參閱「信任的伺服器憑證 (PEM)」一文。
    • 在「Enable legacy mapping」(啟用舊版對應) 部分,選取「true」(預設),即可使用舊版資料類型對應。選取「false」即可使用更新版資料類型對應。如要進行增量移轉,這個值必須為 false。如要進一步瞭解資料類型對應更新,請參閱「2027 年 3 月 16 日」。
    • 在「Ingestion type」(擷取類型) 部分,選取「Full」(完整) 或「Incremental」(增量)。
      • 如果選取「Incremental」(增量) (預先發布版),請在「Write mode」(寫入模式) 中選取「Append」(附加) 或「Upsert」(新增或更新)。如要進一步瞭解不同的寫入模式,請參閱「完整或增量轉移」一節的說明。
    • 在「Microsoft SQL Server objects to transfer」(要移轉的 Microsoft SQL Server 物件),瀏覽 Microsoft SQL Server 資料表,或手動輸入要移轉的資料表名稱。
  5. 在「Destination settings」(目的地設定) 部分,「Dataset」(資料集) 請選取您為了儲存資料而建立的資料集,或按一下「建立新的資料集」,然後建立一個做為目的地資料集。

  6. 在「Transfer config name」(移轉設定名稱) 部分,「Display name」(顯示名稱) 請輸入移轉作業的名稱。移轉作業名稱可以是任何值,能讓您辨識移轉作業,方便您日後在必要時進行修改。

  7. 在「Schedule options」(排程選項) 部分執行下列操作:

    • 選取重複頻率。如果選取「小時」、「天」(預設)、「週」或「月」選項,必須一併指定頻率。您也可以選取「Custom」(自訂) 選項,建立專屬的重複頻率。如果選取「On-demand」(隨選) 選項,這項資料移轉作業只會在您手動觸發時執行。
    • 視情況選取「Start now」(立即開始) 或「Start at set time」(在所設時間開始執行),並提供開始日期和執行時間。
  8. 選用:在「Notification options」(通知選項) 專區,執行下列操作:

    • 如要啟用電子郵件通知,請點選「電子郵件通知」切換按鈕,將其設為開啟。啟用這個選項之後,若移轉失敗,移轉作業管理員就會收到電子郵件通知。
    • 如要設定移轉作業的 Pub/Sub 執行通知,請將「Pub/Sub notifications」(Pub/Sub 通知) 切換鈕撥到開啟位置。您可以選取主題名稱,或點選「Create a topic」(建立主題) 來建立主題。
  9. 選用:在「Advanced options」(進階選項) 部分,選取這項移轉作業的加密類型。您可以選取 Google-owned and Google-managed encryption key或客戶擁有的 Cloud Key Management Service 金鑰。如要進一步瞭解加密金鑰,請參閱「客戶自行管理的加密金鑰 (CMEK)」。

  10. 按一下 [儲存]。

bq

輸入 bq mk 指令, 並提供轉移建立旗標 --transfer_config:

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

更改下列內容:

  • PROJECT_ID (選用): Google Cloud 專案 ID。如未提供 --project_id 旗標來指定特定專案,系統會使用預設專案。
  • DATA_SOURCE:資料來源,即 sqlserver。
  • DISPLAY_NAME:資料移轉設定的顯示名稱。移轉作業名稱可以是任意值,日後需要修改移轉作業時,能夠據此識別即可。
  • DATASET:資料移轉設定的目標資料集。
  • PARAMETERS:以 JSON 格式建立的轉移設定參數。例如:--params='{"param":"param_value"}'。以下是 Microsoft SQL Server 轉移作業的參數:

    • connector.networkAttachment (選用):要連線至 Microsoft SQL Server 資料庫的網路連結名稱。
    • connector.database:Microsoft SQL Server 資料庫的名稱。
    • connector.endpoint.host:資料庫的主機名稱或 IP 位址。
    • connector.endpoint.port:資料庫的通訊埠編號。
    • connector.authentication.username:資料庫使用者的使用者名稱。
    • connector.authentication.password:資料庫使用者的密碼。
    • connector.legacyMapping:設為 true (預設),即可使用舊版資料類型對應。設為 false 即可使用更新版資料類型對應。如要進行增量移轉,這個值必須是 false。如要進一步瞭解資料類型對應更新,請參閱「2027 年 3 月 16 日」。
    • connector.tls.mode:指定要與這項轉移作業搭配使用的 TLS 設定:
      • ENCRYPT_VERIFY_CA_AND_HOST 加密資料,並驗證憑證授權單位和主機名稱
      • ENCRYPT_VERIFY_CA 加密資料,且僅驗證憑證授權單位
      • ENCRYPT_VERIFY_NONE (僅用於資料加密)
      • DISABLE:不加密或驗證
    • connector.tls.trustedServerCertificate:(選用) 提供一或多個 PEM 編碼憑證。只有在 connector.tls.mode 的值為 ENCRYPT_VERIFY_CA_AND_HOST 或 ENCRYPT_VERIFY_CA 時,才需要提供。
    • ingestionType:指定 full 或 incremental。預先發布版支援增量移轉。詳情請參閱「完整或增量移轉」。
    • writeMode:指定 WRITE_MODE_APPEND 或 WRITE_MODE_UPSERT。
    • watermarkColumns:將資料表中的資料欄指定為浮水印資料欄。 如要進行增量移轉,則必須填寫這個欄位。
    • primaryKeys:將資料表中的資料欄指定為主鍵。如要進行增量轉移,這個欄位為必填。
    • assets:Microsoft SQL Server 資料表名稱清單,這些資料表會從 Microsoft SQL Server 資料庫轉移,做為轉移作業的一部分。

舉例來說,下列指令會建立名為 My Transfer 的 Microsoft SQL Server 移轉作業:

bq mk \
    --transfer_config
    --target_dataset=mydataset
    --data_source=sqlserver
    --display_name='My Transfer'
    --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.database":"DB1",
        "connector.endpoint.host":"192.168.0.1",
        "connector.endpoint.port":"1520",
        "connector.networkAttachment":"projects/dev-project1/regions/us-central1/networkattachments/na1",
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_APPEND",
        "watermarkColumns":["createdAt","createdAt"],
        "primaryKeys":[['dep_id'], ['report_by','report_title']],
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'

在增量轉移期間指定多項資產時,watermarkColumns 和 primaryKeys 欄位的值會對應至 assets 欄位中的值位置。在以下範例中,dep_id 對應至資料表 DB1/DEPARTMENT,而 report_by 和 report_title 則對應至資料表 DB1/EMPLOYEES。

      "primaryKeys":[['dep_id'], ['report_by','report_title']],
      "assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
  

儲存移轉設定後,Microsoft SQL Server 連接器會根據排程選項,自動觸發移轉作業。每次執行移轉作業時,Microsoft SQL Server 連接器都會將 Microsoft SQL Server 中的所有可用資料移轉至 BigQuery。

如要在排程時間以外手動執行資料移轉作業,可以啟動補充執行作業。

疑難排解

如要排解資料移轉問題,請參閱「Microsoft SQL Server 移轉問題」。

轉移中繼資料

您也可以使用 Microsoft SQL Server 連接器,將中繼資料轉移至 Knowledge Catalog。詳情請參閱「將 Microsoft SQL Server 中繼資料載入 Knowledge Catalog」。

後續步驟