Sdílet prostřednictvím


Spouštění federovaných dotazů na Microsoft SQL Serveru

Tento článek popisuje, jak nastavit federaci Lakehouse pro spouštění federovaných dotazů na data SQL Serveru, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?.

Pokud se chcete připojit k databázi SQL Serveru pomocí federace Lakehouse, musíte v metastore katalogu Azure Databricks Unity vytvořit následující:

  • Připojení k databázi SQL Serveru.
  • Cizí katalog, který zrcadlí databázi SQL Serveru v katalogu Unity, abyste mohli pomocí nástrojů pro dotazy a zásady správného řízení dat v Unity spravovat uživatelský přístup k databázi Azure Databricks.

Lakehouse Federation podporuje SQL Server, Azure SQL Database a Azure SQL Managed Instance.

Než začnete

Požadavky na pracovní prostor:

  • Pracovní prostor je povolený pro katalog Unity.

Požadavky na výpočetní prostředky:

  • Síťové připojení z vašeho výpočetního prostředku k cílovým databázovým systémům. Viz doporučení k sítím pro Federaci Lakehouse.
  • Výpočetní instance Azure Databricks musí používat Databricks Runtime 13.3 LTS nebo novější a režim sdíleného přístupu nebo režim přístupu jednoho uživatele.
  • Sql Warehouse musí být pro nebo bezserverové a musí používat verzi 2023.40 nebo vyšší.

Požadovaná oprávnění:

  • Pokud chcete vytvořit připojení, musíte být správcem metastoru nebo uživatelem s CREATE CONNECTION oprávněním k metastoru katalogu Unity připojenému k pracovnímu prostoru.
  • Chcete-li vytvořit cizí katalog, musíte mít CREATE CATALOG oprávnění k metastoru a být buď vlastníkem připojení, nebo mít CREATE FOREIGN CATALOG oprávnění k připojení.

Další požadavky na oprávnění jsou uvedeny v následující části založené na úlohách.

  • Pokud plánujete ověřování pomocí OAuth, zaregistrujte aplikaci v Microsoft Entra ID pro Azure Databricks. Podrobnosti najdete v následující části.

(Volitelné) Registrace aplikace v Microsoft Entra ID pro Azure Databricks

Pokud chcete provést ověření pomocí OAuth, před vytvořením připojení k SQL Serveru postupujte podle tohoto kroku. Pokud chcete místo toho provést ověření pomocí uživatelského jména a hesla, přeskočte tuto část.

  1. Přihlaste se k portálu Azure.
  2. V levém navigačním panelu klikněte na Microsoft Entra ID.
  3. Klikněte na Registrace aplikací.
  4. Klikněte na Nová registrace. Zadejte název nové aplikace a nastavte identifikátor URI přesměrování na https://<workspace-url>/login/oauth/azure.html.
  5. Klikněte na Zaregistrovat.
  6. Do pole Základy zkopírujte a uložte ID aplikace (klienta). Tuto hodnotu použijete ke konfiguraci aplikace.
  7. Klikněte na Certifikáty a tajné kódy.
  8. Na kartě Tajné kódy klienta klikněte na Nový tajný klíč klienta.
  9. Zadejte popis tajného kódu a vypršení platnosti (výchozí nastavení je 180 dní).
  10. Klikněte na tlačítko Přidat.
  11. Zkopírujte vygenerovanou hodnotu pro tajný klíč klienta.
  12. Klikněte na oprávnění rozhraní API.
  13. Klikněte na Přidat oprávnění.
  14. Vyberte Azure SQL Database a v části Delegovaná oprávnění klikněte na user_impersonation.
  15. Klikněte na Přidat oprávnění.

Vytvoření připojení

Připojení určuje cestu a přihlašovací údaje pro přístup k externímu databázovému systému. K vytvoření připojení můžete použít Průzkumníka katalogu nebo CREATE CONNECTION příkaz SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL Databricks.

Poznámka:

K vytvoření připojení můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/connections a příkazy katalogu Unity.

Požadovaná oprávnění: Správce metastoru nebo uživatel s oprávněním CREATE CONNECTION .

Průzkumník katalogu

  1. V pracovním prostoru Azure Databricks klikněte na Ikona kataloguKatalog.

  2. V horní části podokna Katalog klikněte na Add or plus icon ikonu Přidat a v nabídce vyberte Přidat připojení.

    Případně na stránce Rychlý přístup klikněte na tlačítko Externí data, přejděte na kartu Připojení a klikněte na Vytvořit připojení.

  3. Zadejte uživatelsky přívětivý název připojení.

  4. Vyberte typpřipojení SQL Serveru.

  5. Vyberte typověřování OAuth nebo uživatelské jméno a heslo.

  6. V závislosti na metodě ověřování zadejte následující vlastnosti připojení pro vaši instanci SQL Serveru:

    • Hostitel: Server SQL.
    • (Základní ověřování) Přístav
    • (Základní ověřování) trustServerCertificate: Výchozí hodnota falseje . Pokud je tato možnost nastavená true, vrstva přenosu používá protokol SSL k šifrování kanálu a předává řetěz certifikátů k ověření důvěryhodnosti. Ponechte tuto možnost nastavenou na výchozí, pokud nemáte konkrétní potřebu obejít ověření důvěryhodnosti.
    • (Základní ověřování) Uživatel
    • (Základní ověřování) Heslo
    • (OAuth) Koncový bod autorizace: Koncový bod autorizace Azure Entra ve formátu https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize.
    • (OAuth) ID klienta z aplikace, kterou jste vytvořili.
    • (OAuth) Tajný klíč klienta z tajného klíče klienta, který jste vytvořili.
    • (OAuth) Obor klienta: Zadejte následující hodnotu bez úprav: https://database.windows.net/.default offline_access.
    • (OAuth) Zobrazí se výzva, abyste se přihlásili pomocí Azure Entra ID. Zadejte uživatelské jméno a heslo Azure. Po přesměrování na stránku pro vytvoření připojení se autorizační kód vyplní v uživatelském rozhraní.
  7. (Volitelné) V rozevírací nabídce Záměr aplikace vyberte možnost (Výchozí: Read write).

  8. (Volitelné) Kliknutím na test připojení potvrďte, že funguje.

  9. (Volitelné) Přidejte komentář.

  10. Klikněte na Vytvořit.

Poznámka:

(OAuth) Koncový bod OAuth ID Azure Entra musí být přístupný z IP adres řídicí roviny Azure Databricks. Viz oblasti Azure Databricks.

SQL

V poznámkovém bloku nebo editoru dotazů SQL Databricks spusťte následující příkaz.

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

Doporučujeme používat tajné kódy Azure Databricks místo řetězců prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Příklad:

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>')
)

Informace o nastavení tajných kódů najdete v tématu Správa tajných kódů.

Vytvoření zahraničního katalogu

Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog. Chcete-li vytvořit cizí katalog, použijete připojení ke zdroji dat, který již byl definován.

K vytvoření cizího katalogu můžete použít Průzkumníka katalogu nebo CREATE FOREIGN CATALOG příkaz SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL.

Poznámka:

K vytvoření katalogu můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/catalogs a příkazy katalogu Unity.

Požadovaná oprávnění:CREATE CATALOG oprávnění k metastoru a vlastnictví připojení nebo CREATE FOREIGN CATALOG oprávnění k připojení.

Průzkumník katalogu

  1. V pracovním prostoru Azure Databricks kliknutím na Ikona kataloguKatalog otevřete Průzkumníka katalogu.

  2. V horní části podokna Katalog klikněte na Add or plus icon ikonu Přidat a v nabídce vyberte Přidat katalog.

    Případně na stránce Rychlý přístup klikněte na tlačítko Katalogy a potom klikněte na tlačítko Vytvořit katalog.

  3. Postupujte podle pokynů pro vytváření cizích katalogů v části Vytváření katalogů.

SQL

V poznámkovém bloku nebo editoru dotazů SQL spusťte následující příkaz SQL. Položky v závorkách jsou volitelné. Nahraďte zástupné hodnoty:

  • <catalog-name>: Název katalogu v Azure Databricks.
  • <connection-name> : Objekt připojení, který určuje zdroj dat, cestu a přihlašovací údaje pro přístup.
  • <database-name>: Název databáze, kterou chcete zrcadlit jako katalog v Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Podporované odsdílení změn

Na všech výpočetních prostředcích se podporují následující nabízení:

  • Filtry
  • Projekce
  • Limit
  • Funkce: částečné, pouze pro výrazy filtru. (Řetězcové funkce, matematické funkce, data, časová a časová razítka a další různé funkce, jako jsou Alias, Cast, SortOrder)

V Databricks Runtime 13.3 LTS a novějších a na výpočetních prostředcích SQL Warehouse se podporují následující nabízení:

  • Souhrny
  • Následující logické operátory: =, <, <=, >, >=, <=>
  • Následující matematické funkce (nepodporuje se, pokud je anSI zakázán): +, -, *, %, /
  • Následující různé operátory: ^, |, ~
  • Řazení při použití s limitem

Následující nabízená oznámení nejsou podporována:

  • Spojení
  • Funkce Systému Windows

Mapování datového typu

Při čtení z SQL Serveru do Sparku se datové typy mapuje takto:

Typ SQL Serveru Typ Sparku
bigint (bez znaménka), desetinné číslo, peníze, číselné, malé DecimalType
smallint, tinyint Krátký typ
int IntegerType
bigint (pokud je podepsaný) LongType
real FloatType
float (číslo s plovoucí řádovou čárkou) DoubleType
char, nchar, uniqueidentifier CharType
nvarchar, varchar VarcharType
text, xml StringType
binary, geography, geometry, image, timestamp, udt, varbinary BinaryType
bitové BooleanType
datum Typ data
datetime, datetime, smalldatetime, time TimestampType/TimestampNTZType

*Při čtení z SQL Serveru se SQL Server datetimes mapuje na Spark TimestampType , pokud preferTimestampNTZ = false (výchozí). SQL Server datetimes je mapován na TimestampNTZType if preferTimestampNTZ = true.