Delen via


Federatieve query's uitvoeren op Microsoft SQL Server

Belangrijk

Deze functie is beschikbaar als openbare preview.

In dit artikel wordt beschreven hoe u Lakehouse Federation instelt om federatieve query's uit te voeren op SQL Server-gegevens die niet worden beheerd door Azure Databricks. Zie Wat is Lakehouse Federation voor meer informatie over Lakehouse Federation.

Als u verbinding wilt maken met uw SQL Server-database met behulp van Lakehouse Federation, moet u het volgende maken in uw Azure Databricks Unity Catalog-metastore:

  • Een verbinding met uw SQL Server-database.
  • Een refererende catalogus die uw SQL Server-database in Unity Catalog weerspiegelt, zodat u de syntaxis van de Unity Catalog-query en hulpprogramma's voor gegevensbeheer kunt gebruiken voor het beheren van azure Databricks-gebruikerstoegang tot de database.

Voordat u begint

Vereisten voor werkruimte:

  • Werkruimte ingeschakeld voor Unity Catalog.

Rekenvereisten:

  • Netwerkconnectiviteit van uw Databricks Runtime-cluster of SQL Warehouse naar de doeldatabasesystemen. Zie De aanbevelingen voor netwerken voor Lakehouse Federation.
  • Azure Databricks-clusters moeten gebruikmaken van Databricks Runtime 13.3 LTS of hoger en de modus voor gedeelde of toegang tot één gebruiker.
  • SQL-warehouses moeten Pro of Serverless zijn en moeten 2023.40 of hoger gebruiken.

Vereiste machtigingen:

  • Als u een verbinding wilt maken, moet u een metastore-beheerder of een gebruiker zijn met de CREATE CONNECTION bevoegdheid voor de Unity Catalog-metastore die is gekoppeld aan de werkruimte.
  • Als u een refererende catalogus wilt maken, moet u beschikken over de CREATE CATALOG machtiging voor de metastore en de eigenaar van de verbinding zijn of over de CREATE FOREIGN CATALOG bevoegdheid voor de verbinding beschikken.

Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.

  • Als u zich wilt verifiëren met eenmalige aanmelding (SSO), registreert u een app in Microsoft Entra ID voor Azure Databricks. Zie de volgende sectie voor meer informatie.

(Optioneel) Een app registreren in Microsoft Entra ID voor Azure Databricks

Als u zich wilt verifiëren met eenmalige aanmelding, volgt u deze stap voordat u een SQL Server-verbinding maakt. Als u zich wilt verifiëren met behulp van een gebruikersnaam en wachtwoord, slaat u deze sectie over.

  1. Meld u aan bij het Azure-portaal.
  2. Klik in het linkernavigatievenster op Microsoft Entra-id.
  3. Klik op App-registraties.
  4. Klik op Nieuwe registratie. Voer een naam in voor de nieuwe app en stel de omleidings-URI in op https://<workspace-url>/login/oauth/azure.html.
  5. Klik op Registreren.
  6. Kopieer en sla in het vak Essentials de toepassings-id (client) op. U gebruikt deze waarde om de toepassing te configureren.
  7. Klik op Certificaten en geheimen.
  8. Klik op het tabblad Clientgeheimen op Nieuw clientgeheim.
  9. Voer een beschrijving in voor het geheim en een vervaldatum (de standaardinstelling is 180 dagen).
  10. Klik op Toevoegen.
  11. Kopieer de gegenereerde waarde voor het clientgeheim.

Een verbinding maken

Een verbinding geeft een pad en referenties op voor toegang tot een extern databasesysteem. Als u een verbinding wilt maken, kunt u Catalog Explorer of de CREATE CONNECTION SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.

Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION bevoegdheid.

Catalogusverkenner

  1. Klik in uw Azure Databricks-werkruimte op Cataloguspictogram Catalogus.

  2. Klik boven aan het deelvenster Catalogus op het Pictogram Toevoegen of plus pictogram Toevoegen en selecteer Een verbinding toevoegen in het menu.

    U kunt ook op de pagina Snelle toegang op de knop Externe gegevens klikken, naar het tabblad Verbindingen gaan en op Verbinding maken klikken.

  3. Voer een gebruiksvriendelijke verbindingsnaam in.

  4. Selecteer een verbindingstype van SQL Server.

  5. Selecteer een verificatietype van OAuth of gebruikersnaam en wachtwoord.

  6. Voer de volgende verbindingseigenschappen in voor uw SQL Server-exemplaar, afhankelijk van uw verificatiemethode:

    • Host: uw SQL-server.
    • (Basisverificatie) Haven
    • (Basisverificatie) trustServerCertificate: standaard ingesteld op false. Wanneer deze instelling is ingesteld true, gebruikt de transportlaag SSL om het kanaal te versleutelen en wordt de certificaatketen omzeild om de vertrouwensrelatie te valideren. Laat deze instelling op de standaardwaarde staan, tenzij u een specifieke noodzaak hebt om vertrouwensvalidatie te omzeilen.
    • (Basisverificatie) Gebruiker
    • (Basisverificatie) Wachtwoord
    • (SSO) Autorisatie-eindpunt: uw Azure Entra-autorisatie-eindpunt in de indeling https://login.microsoftonline.com/<subscription-id>/oauth2/v2.0/authorize.
    • (SSO) Client-id van de app die u hebt gemaakt.
    • (SSO) Clientgeheim van het clientgeheim dat u hebt gemaakt.
    • (SSO) Clientbereik: Voer de volgende waarde in zonder wijzigingen: https://database.windows.net/.default offline_access
    • (SSO) U wordt gevraagd u aan te melden bij Aanmelden met De Azure Entra-id. Voer uw Azure-gebruikersnaam en -wachtwoord in. Nadat u bent omgeleid naar de pagina voor het maken van verbindingen, wordt de autorisatiecode ingevuld in de gebruikersinterface.
  7. (Optioneel) Klik op Verbinding testen om te bevestigen dat deze werkt.

  8. (Optioneel) Voeg een opmerking toe.

  9. Klik op Create.

Notitie

(SSO) Het OAuth-eindpunt van De Azure Entra-id moet toegankelijk zijn vanuit IP-adressen van het besturingsvlak van Azure Databricks. Zie Azure Databricks-regio's.

SQL

Voer de volgende opdracht uit in een notebook of de Sql-query-editor van Databricks.

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

U wordt aangeraden Azure Databricks-geheimen te gebruiken in plaats van tekenreeksen zonder opmaak voor gevoelige waarden, zoals referenties. Voorbeeld:

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

Zie Geheimbeheer voor informatie over het instellen van geheimen.

Een refererende catalogus maken

Een refererende catalogus spiegelt een database in een extern gegevenssysteem, zodat u de toegang tot gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog. Als u een refererende catalogus wilt maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.

Als u een refererende catalogus wilt maken, kunt u Catalog Explorer of de CREATE FOREIGN CATALOG SQL-opdracht gebruiken in een Azure Databricks-notebook of de SQL-queryeditor.

Vereiste machtigingen: CREATE CATALOG machtiging voor de metastore en eigendom van de verbinding of de CREATE FOREIGN CATALOG bevoegdheid voor de verbinding.

Catalogusverkenner

  1. Klik in uw Azure Databricks-werkruimte op Cataloguspictogram Catalog om Catalog Explorer te openen.

  2. Klik boven aan het deelvenster Catalogus op het Pictogram Toevoegen of plus pictogram Toevoegen en selecteer Een catalogus toevoegen in het menu.

    U kunt ook op de pagina Snelle toegang op de knop Catalogussen klikken en vervolgens op de knop Catalogus maken klikken.

  3. Volg de instructies voor het maken van refererende catalogi in Catalogussen maken.

SQL

Voer de volgende SQL-opdracht uit in een notebook of SQL-queryeditor. Items tussen haakjes zijn optioneel. Vervang de waarden van de tijdelijke aanduidingen:

  • <catalog-name>: Naam voor de catalogus in Azure Databricks.
  • <connection-name>: Het verbindingsobject waarmee de gegevensbron, het pad en de toegangsreferenties worden opgegeven.
  • <database-name>: De naam van de database die u wilt spiegelen als een catalogus in Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Ondersteunde pushdowns

De volgende pushdowns worden ondersteund voor alle berekeningen:

  • Filters
  • Projecties
  • Grenswaarde
  • Functies: gedeeltelijk, alleen voor filterexpressies. (Tekenreeksfuncties, wiskundige functies, gegevens, tijd- en tijdstempelfuncties en andere diverse functies, zoals Alias, Cast, SortOrder)

De volgende pushdowns worden ondersteund in Databricks Runtime 13.3 LTS en hoger, en op SQL Warehouse Compute:

  • Aggregaties
  • De volgende Booleaanse operatoren: =, , =>, =, = <><<>
  • De volgende wiskundige functies (niet ondersteund als ANSI is uitgeschakeld): +, -, *, %, /
  • De volgende diverse operators: ^, |, ~
  • Sorteren, bij gebruik met limiet

De volgende pushdowns worden niet ondersteund:

  • Samenvoegingen
  • Windows-functies

Toewijzingen van gegevenstypen

Wanneer u van SQL Server naar Spark leest, worden gegevenstypen als volgt toegewezen:

SQL Server-type Spark-type
bigint (niet-ondertekend), decimaal, geld, numeriek, smallmoney DecimalType
smallint ShortType
int, tinyint IntegerType
bigint (indien ondertekend) LongType
werkelijk FloatType
zwevend DoubleType
char, nchar, uniqueidentifier CharType
nvarchar, varchar VarcharType
tekst, xml StringType
binair, geografie, geometrie, afbeelding, tijdstempel, udt, varbinary BinaryType
bit BooleanType
datum DateType
datum/tijd, datum/tijd, smalldatetime, tijd TimestampType/TimestampNTZType

*Wanneer u uit SQL Server leest, wordt SQL Server datetimes toegewezen aan Spark TimestampType als preferTimestampNTZ = false (standaard). SQL Server datetimes wordt toegewezen aan TimestampNTZType if preferTimestampNTZ = true.