SQL Server 適用的 Cloud SQL

透過 SQL Server 適用的 Cloud SQL 連接器,您可以在 SQL Server 資料庫中插入、讀取、更新及刪除資料列。

支援的版本

SQL Server 版本:2008、2012、2014、2016、2017、2019 和 2022

事前準備

使用 SQL Server 適用的 Cloud SQL 連接器前,請先完成下列工作:

  • 在 Google Cloud 專案中:
    • 確認已設定網路連線。如要瞭解網路模式,請參閱「網路連線」。
    • roles/connectors.admin IAM 角色授予設定連線器的使用者。
    • 將下列 IAM 角色授予要用於連接器的服務帳戶:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
      • roles/cloudsql.editor

      服務帳戶是特殊的 Google 帳戶類型,主要用於代表需要驗證且必須取得授權才能存取 Google API 資料的非人類使用者。如果您沒有服務帳戶,請建立服務帳戶。連接器和服務帳戶必須屬於同一個專案。詳情請參閱「建立服務帳戶」。

    • 啟用下列服務:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如要瞭解如何啟用服務,請參閱「啟用服務」。

    如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。

  • 啟用 sqladmin.googleapis.com (Cloud SQL Admin API) 服務。

設定連接器

連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連結,請按照下列步驟操作:

  1. Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。

    前往「Connections」(連線) 頁面

  2. 按一下「+ 建立新連線」,開啟「建立連線」頁面。
  3. 在「位置」部分中,選擇連線位置。
    1. 區域:從下拉式清單中選取位置。

      如需所有支援地區的清單,請參閱「位置」一文。

    2. 點按「下一步」
  4. 在「連線詳細資料」部分,完成下列步驟:
    1. 連接器:從可用連接器的下拉式清單中,選取「SQL Server 適用的 Cloud SQL」
    2. 連接器版本:從可用版本的下拉式清單中選取連接器版本。
    3. 在「連線名稱」欄位中,輸入連線執行個體的名稱。

      連線名稱必須符合下列條件:

      • 連線名稱可使用英文字母、數字或連字號。
      • 字母必須為小寫。
      • 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
      • 連結名稱不得超過 49 個字元。
    4. 視需要輸入連線執行個體的「Description」(說明)
    5. 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為 Error
    6. 服務帳戶:選取具備必要角色的服務帳戶。
    7. 視需要設定「連線節點設定」

      • 節點數量下限:輸入連線節點數量下限。
      • 節點數量上限:輸入連線節點數量上限。

      節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連線器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。

    8. 專案 ID:Cloud SQL 執行個體所在的 Google Cloud 專案 ID。
    9. 資料庫區域:Cloud SQL 執行個體所在的區域名稱。
    10. 執行個體 ID:要連線的 Cloud SQL 執行個體 ID。
    11. 「資料庫名稱」:要連線的 SQL Server 資料庫名稱。
    12. (選用) 按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
    13. 點按「下一步」
  5. 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。
    1. 目的地類型:選取目的地類型
      • 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
      • 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。

      如要建立與後端系統的公開連線,並提高安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。

      如要輸入其他目的地,請按一下「+新增目的地」

    2. 點按「下一步」
  6. 在「Authentication」(驗證) 部分,輸入驗證詳細資料。
    1. 選取「驗證類型」,然後輸入相關詳細資料。

      SQL Server 適用的 Cloud SQL 連線支援下列驗證類型:

      • 使用者名稱和密碼
    2. 如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。

    3. 點按「下一步」
  7. 檢查:檢查連線和驗證詳細資料。
  8. 點選「建立」

設定驗證機制

根據要使用的驗證方式輸入詳細資料。

  • 使用者名稱和密碼
    • 使用者名稱:用於連線的 SQL Server 使用者名稱。
    • 密碼:Secret Manager 密鑰,內含與 SQL Server 使用者名稱相關聯的密碼。

連線設定範例

基本驗證連線類型

欄位名稱 詳細資料
位置 us-central1
連接器 CloudSQL SQL Server
連接器版本 1
連線名稱 cloudsql-server-private
啟用 Cloud Logging
服務帳戶 SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
專案 ID connectors-prod-test
資料庫區域 us-central1
執行個體 ID google-cloud-bcone-sql-instance1
資料庫名稱 sqlcloudprivate_DB
節點數量下限 2
節點數量上限 2
目的地類型 主機位址
主機 主機
通訊埠 PORT
使用者名稱 使用者名稱
密碼 密碼
密鑰版本 1

系統限制

SQL Server 適用的 Cloud SQL 連接器每秒最多可處理 30 筆交易 (每個節點),超過此限制的交易會遭到節流。根據預設,整合連接器會為連線分配 2 個節點 (提高可用性)。

如要瞭解 Integration Connectors 適用的限制,請參閱「限制」一文。

在整合服務中使用 SQL Server 適用的 Cloud SQL 連線

建立連線後,Apigee Integration 和 Application Integration 都會提供該連線。您可以在整合中透過「連接器」工作使用連線。

  • 如要瞭解如何在 Apigee Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
  • 如要瞭解如何在 Application Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。

此外,請參閱「對 MySQL 資料庫執行 CRUD 作業」教學課程,瞭解如何建立 MySQL 連線,並在整合功能中使用該連線執行讀取和寫入作業。

支援的資料類型

這個連接器支援的資料類型如下:

  • BIGINT
  • BINARY
  • BIT
  • BOOLEAN
  • CHAR
  • DATE
  • DECIMAL
  • DOUBLE
  • FLOAT
  • INTEGER
  • LONGN VARCHAR
  • LONG VARCHAR
  • NCHAR
  • NUMERIC
  • NVARCHAR
  • REAL
  • SMALL INT
  • 時間
  • TIMESTAMP
  • TINY INT
  • VARBINARY
  • VARCHAR

動作

本節提供這個連接器可執行的動作

Employee_Procedure 動作

這項動作會擷取員工資料。

Employee_Procedure 動作的輸入參數

參數名稱 資料類型 必填 說明
ID 整數值 員工 ID。

如要瞭解如何設定 Employee_Procedure 動作,請參閱「動作範例」。

動作範例

本節提供這個連接器可執行的動作範例。

範例 - 擷取員工資料

  1. Configure connector task 對話方塊中,按一下 Actions
  2. 選取「Employee_Procedure」動作,然後按一下「完成」
  3. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "ID": 3
    }
    
  4. 如果動作成功,連接器工作的 connectorOutputPayload 回應參數值會類似以下內容:

    [{
      "ID": 3,
      "Name": "Charlie",
      "City": "Paris",
      "SALARY": 6500.0,
      "Department": "IT"
    }]
    

實體作業範例

本節提供這個連接器可用的實體作業範例。

範例 - 列出所有人員

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 Persons
  3. 選取「List」作業,然後按一下「完成」
  4. 在「連線器」工作的「工作輸入」部分,您可以設定 filterClause,滿足篩選需求。
  5. 您必須使用單引號 (') 括住 filterClause 的值。您可以使用 filterClause,根據資料欄篩選記錄。

範例 - 取得人員詳細資料

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 Persons
  3. 選取「Get」作業,然後按一下「完成」
  4. 在「Connectors」任務的「Task Input」部分,按一下「entityId」,然後在「Default Value」欄位中輸入 1。這個 ID 會指定要擷取的記錄。

範例 - 刪除使用者

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 Persons
  3. 選取「Delete」作業,然後按一下「完成」
  4. 在「Connectors」任務的「Task Input」部分,按一下「entityId」,然後在「Default Value」欄位中輸入 9。這個 ID 會指定要刪除的記錄。

範例 - 建立人員

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 Persons
  3. 選取「Create」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "LastName": "Charlie",
      "FirstName": "Cruz",
      "Address": "123 Main Street",
      "City": "Paris"
    }
    

    如果整合成功,連接器工作的 connectorOutputPayload 回應參數會包含類似下列的值:

    {
      "PersonID": 100.0,
      "LastName": "Charlie",
      "FirstName": "Cruz",
      "Address": "123 Main Street",
      "City": "Paris"
    }
    

範例 - 建立員工詳細資料

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 SQL_Performance_EmployeeDetails
  3. 選取「Create」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "ID": 9.0,
      "FirstName": "Alex",
      "LastName": "Ariel",
      "MyDate": "2021-10-22",
      "MyTime": "13:54:19",
      "MySmallDateTime": "2021-10-22 13:54:00.0",
      "MyDateTime": "2021-10-22 13:54:19.057",
      "MyDateTime2": "2021-10-22 13:54:19.055",
      "MyDateTimeOffset": "2021-10-22 13:54:19.055",
      "MyDecimalColumn": 123.0,
      "MyNumericColumn": 12345.12,
      "salary": 4000.0,
      "Location": "Paris",
      "City": "Paris",
      "Designation": "Consultant",
      "Position": "Junior",
      "Experience": 5.0,
      "Emp_Father_Name": "Taylor",
      "Emp_Spouse": "Yuri",
      "Age": 29.0,
      "Celsius": 35.0,
      "Isregistered": "AA==",
      "Data": "{\"name\": \"Raj\",\"skills\": [\"SSIS\", \"SSRS\", \"JS\"],\"Age\": 30}",
      "Emp_Status": "Active",
      "Emp_Department": "IT",
      "Emp_Zip": 121212.0,
      "Sex": "Male",
      "Manager": "Dana",
      "ManagerId": 10.0,
      "Manager_Location": "Paris",
      "HR_Name": "Sasha",
      "Emp_Technology": "SQL",
      "Company_Name": "Altostrat",
      "Company_Location": "Paris",
      "Emp_Degree": "BE",
      "Emp_10TH": "Y",
      "Emp_12TH": "Y",
      "Emp_10Th_Marks": 70.0,
      "Emp_12TH_Marks": 80.0,
      "Emp_Degree_Marks": 90.0,
      "work": "WFH",
      "Emp_Language": "English",
      "Emp_System": "Laptop",
      "Daily_Hrs": 9.0,
      "Week_Days": 5.0,
      "Weekly_Off": 2.0,
      "Client_Name": "Google",
      "Client_Location": "Lisbon",
      "Team_Size": 15.0,
      "Reports_TO": "Manager"
    }
    

    如果整合成功,連接器工作的 connectorOutputPayload 回應參數值會類似於下列內容:

    {
      "ID": 9.0,
      "FirstName": "Alex",
      "LastName": "Ariel",
      "City": "Paris",
      "Salary": 4000.0
    }
    

範例 - 建立員工

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 Employee
  3. 選取「Create」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "NAME": "Dana",
      "AGE": 30,
      "City": "Lisbon",
      "SALARY": 10000.0
    }
    

    如果整合成功,連接器工作的 connectorOutputPayload 回應參數值會類似於下列內容:

    {
      "ID": 88.0,
      "NAME": "Dana",
      "AGE": 30,
      "City": "Lisbon",
      "SALARY": 10000.0
    }
    

範例 - 更新人員詳細資料

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 Persons
  3. 選取「Update」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "LastName": "Charlie",
      "FirstName": "Cruz",
      "Address": "8 Rue du Nom Fictif",
      "City": "Paris"
    }
    
  5. 在「Connectors」任務的「Task Input」部分,按一下「entityId」,然後在「Default Value」欄位中輸入 10。這個 ID 會指定要更新的記錄。

    除了指定 entityId,您也可以將 filterClause 設為 '10'

    如果整合成功,連接器工作的 connectorOutputPayload 回應參數值會類似於下列內容:

    {
      "LastName": "Charlie",
      "FirstName": "Cruz",
      "Address": "8 Rue du Nom Fictif",
      "City": "Paris"
    }
    

範例 - 更新員工詳細資料

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 SQL_Performance_EmployeeDetails
  3. 選取「Update」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "Age": 30
    }
    
  5. 在「Connectors」任務的「Task Input」部分,按一下「entityId」,然後在「Default Value」欄位中輸入 5。這個 ID 會指定要更新的記錄。

    除了指定 entityId,您也可以將 filterClause 設為 '5'

    如果整合成功,連接器工作的 connectorOutputPayload 回應參數值會類似於下列內容:

    {
      "Age": 30
    }
    

範例 - 更新員工

  1. Configure connector task 對話方塊中,按一下 Entities
  2. Entity 清單中選取 Employee
  3. 選取「Update」作業,然後按一下「完成」
  4. 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下 connectorInputPayload,然後在 Default Value 欄位中輸入類似下列的值:
    {
      "AGE": 41,
      "City": "Paris",
      "SALARY": 10000.0
    }
    
  5. 在「Connectors」任務的「Task Input」部分,按一下「entityId」,然後在「Default Value」欄位中輸入 2。這個 ID 會指定要更新的記錄。

    除了指定 entityId,您也可以將 filterClause 設為 '2'

    如果整合成功,連接器工作的 connectorOutputPayload 回應參數值會類似於下列內容:

    {
      "AGE": 41,
      "City": "Paris",
      "SALARY": 10000.0
    }
    

使用 Terraform 建立連線

您可以使用 Terraform 資源建立新連線。

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

如要查看用於建立連線的 Terraform 範本範例,請參閱範本範例

使用 Terraform 建立連線時,您必須在 Terraform 設定檔中設定下列變數:

參數名稱 資料類型 必填 說明
project_id STRING 含有 Cloud SQL 執行個體的專案 ID,例如 myproject。
database_region STRING 執行個體的雲端區域,例如 us-central1。
instance_id STRING 資料庫執行個體 ID。這個值不含專案 ID,例如 myinstance。
database_name STRING 執行個體中的資料庫名稱,例如 mydatabase。

向 Google Cloud 社群尋求協助

如要發布問題及討論這個連接器,請前往 Cloud 論壇的 Google Cloud 社群。

後續步驟