共用方式為


在 Microsoft SQL Server 上執行同盟查詢

重要

這項功能處於公開預覽狀態

本文說明如何設定 Lakehouse 同盟,以在 Azure Databricks 未管理的 SQL Server 數據上執行同盟查詢。 若要深入瞭解 Lakehouse 同盟,請參閱 什麼是 Lakehouse 同盟

若要使用 Lakehouse 同盟連線到 SQL Server 資料庫,您必須在 Azure Databricks Unity 目錄中繼存放區中建立下列專案:

  • SQL Server 資料庫的連線
  • 外部目錄,鏡像 Unity 目錄中的 SQL Server 資料庫,讓您可以使用 Unity 目錄查詢語法和數據控管工具來管理 Azure Databricks 使用者對資料庫的存取權。

開始之前

工作區需求:

  • 已啟用 Unity 目錄的工作區。

計算需求:

  • 從 Databricks 執行時間叢集或 SQL 倉儲到目標資料庫系統的網路連線。 請參閱 Lakehouse 同盟的網路建議。
  • Azure Databricks 叢集必須使用 Databricks Runtime 13.3 LTS 或更新版本,以及共用或單一使用者存取模式。
  • SQL 倉儲必須是 Pro 或無伺服器。

需要的權限:

  • 若要建立連線,您必須是中繼存放區管理員或具有 CREATE CONNECTION 附加至工作區之 Unity 目錄中繼存放區許可權的使用者。
  • 若要建立外部目錄,您必須擁有 CREATE CATALOG 中繼存放區的許可權,而且必須是聯機的擁有者,或擁有 CREATE FOREIGN CATALOG 連線的許可權。

後續每個以工作為基礎的區段會指定其他許可權需求。

建立連線

連接會指定用來存取外部資料庫系統的路徑和認證。 若要建立連線,您可以在 Azure Databricks 筆記本或 CREATE CONNECTION Databricks SQL 查詢編輯器中使用目錄總管或 SQL 命令。

需要的許可權: 具有許可權的 CREATE CONNECTION 中繼存放區系統管理員或使用者。

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 在左窗格中,展開 [外部數據] 功能表,然後選取 [連線]。
  3. 按兩下 [ 建立連線]。
  4. 輸入使用者易記 連線 名稱
  5. 選取 SQL Server連線 類型
  6. 輸入 SQL Server 實例的下列連線屬性。
    • 主機
    • 通訊埠
    • trustServerCertificate:預設為 false。 當設定為 true時,傳輸層會使用SSL來加密通道,並略過憑證鏈結來驗證信任。 除非您有特定需要略過信任驗證,否則請將此設定保留為預設值。
    • 使用者
    • 密碼
  7. (選擇性)按兩下 [ 測試連線 ] 以確認其運作正常。
  8. (選擇性)新增批注。
  9. 按一下 [建立]

Sql

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

建議您針對認證等敏感性值使用 Azure Databricks 秘密 ,而不是純文本字串。 例如:

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

如需設定秘密的相關信息,請參閱 秘密管理

建立外部目錄

外部目錄會鏡像外部數據系統中的資料庫,讓您可以使用 Azure Databricks 和 Unity 目錄來查詢和管理該資料庫中數據的存取權。 若要建立外部目錄,您可以使用已定義的數據源連線。

若要建立外部目錄,您可以在 Azure Databricks 筆記本或 CREATE FOREIGN CATALOG Databricks SQL 查詢編輯器中使用目錄總管或 SQL 命令。

必要許可權:CREATE CATALOG 中繼存放區的許可權,以及聯機的擁有權或 CREATE FOREIGN CATALOG 連線的許可權。

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 按兩下 [ 建立目錄 ] 按鈕。
  3. 在 [建立新的目錄] 對話框中,輸入目錄的名稱,然後選取 [外部類型]。
  4. 選取 連線以提供您要鏡像作為 Unity 目錄目錄的數據庫存取權。
  5. 輸入您要鏡像做為目錄的資料庫名稱。
  6. 按一下 [建立]

Sql

在筆記本或 Databricks SQL 編輯器中執行下列 SQL 命令。 括弧中的項目是選擇性專案。 取代佔位元值:

CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

支援的下推

所有計算都支援下列下推:

  • 篩選
  • 投影
  • 限制
  • 函式:部分,僅適用於篩選表達式。 (字串函式、數學函式、數據、時間和時間戳函式,以及其他其他函式,例如 Alias、Cast、SortOrder)

Databricks Runtime 13.3 LTS 和更新版本以及 SQL 倉儲計算支援下列下推:

  • 彙總
  • 下列布爾運算符:=、、<<=、>、>=、<=>
  • 下列數學函數(如果 ANSI 已停用,則不支援):+、-、*、% /
  • 下列其他運算符: ^, |, ~
  • 排序,搭配限制使用時

不支援下列下推:

  • 聯結
  • Windows 函式

資料類型對應

當您從 SQL Server 讀取至 Spark 時,資料類型會對應如下:

SQL Server 類型 Spark 類型
bigint (unsigned), decimal, money, numeric, smallmoney DecimalType
smallint ShortType
int,tinyint IntegerType
bigint (如果簽署) LongType
real FloatType
float DoubleType
char、nchar、uniqueidentifier CharType
nvarchar、varchar VarcharType
text、 xml StringType
binary, geography, geometry, image, timestamp, udt, varbinary BinaryType
bit BooleanType
date DateType
datetime、datetime、smalldatetime、time TimestampType/TimestampNTZType

*當您從 SQL Server 讀取時,SQL Server datetimes 會在 [預設值] 對應preferTimestampNTZ = false至 SparkTimestampType。 如果 preferTimestampNTZ = true,SQL Server datetimes 會對應至 TimestampNTZType