Ausführen von Verbundabfragen auf Microsoft SQL Server

In diesem Artikel wird beschrieben, wie Sie Lakehouse Federation einrichten, um Verbundabfragen von SQL Server-Daten auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zu Lakehouse Federation finden Sie unter Was ist Lakehouse Federation?.

Um mithilfe von Lakehouse Federation eine Verbindung mit Ihrer SQL Server-Datenbank herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:

  • Eine Verbindung mit Ihrer SQL Server-Datenbank.
  • Einen Fremdkatalog, der Ihre SQL Server-Datenbank in Unity Catalog spiegelt, sodass Sie die Abfragesyntax und Datengovernancetools von Unity Catalog zum Verwalten des Azure Databricks-Benutzerzugriffs auf die Datenbank verwenden können.

Lakehouse Federation unterstützt SQL Server, Azure SQL-Datenbank und Azure SQL verwaltete Instanz.

Voraussetzungen

Anforderungen an den Arbeitsbereich:

  • Der Arbeitsbereich muss für Unity Catalog aktiviert sein.

Computeanforderungen:

  • Netzwerkkonnektivität zwischen Ihrem Databricks Runtime-Cluster oder SQL-Warehouse und den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
  • Azure Databricks-Cluster müssen databricks Runtime 13.3 LTS oder höher und freigegebenen oder einzelbenutzerzugriffsmodus verwenden.
  • SQL-Warehouses müssen Pro- oder serverlose Warehouses sein und 2023.40 oder höher verwenden.

Erforderliche Berechtigungen:

  • Um eine Verbindung zu erstellen, müssen Sie Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“ für den Unity Catalog-Metastore sein, der an den Arbeitsbereich angefügt ist.
  • Um einen Fremdkatalog zu erstellen, müssen Sie über die Berechtigung „CREATE CATALOG“ für den Metastore verfügen und entweder der Besitzer der Verbindung sein oder über die Berechtigung „CREATE FOREIGN CATALOG“ für die Verbindung verfügen.

In jedem folgenden aufgabenbasierten Abschnitt werden zusätzliche Berechtigungsanforderungen angegeben.

  • Wenn Sie beabsichtigen, sich per OAuth zu authentifizieren, registrieren Sie eine App in Microsoft Entra ID für Azure Databricks. Weitere Informationen hierzu finden Sie im folgenden Abschnitt.

(Optional:) Registrieren einer App in der Microsoft Entra ID für Azure Databricks

Wenn Sie sich per OAuth authentifizieren möchten, führen Sie diesen Schritt aus, bevor Sie eine Verbindung mit SQL Server erstellen. Um sich stattdessen mit einem Benutzernamen und Kennwort zu authentifizieren, überspringen Sie diesen Abschnitt.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie auf der linken Navigationsleiste Microsoft Entra ID aus.
  3. Klicken Sie auf App-Registrierungen.
  4. Klicken Sie auf Neue Registrierung. Geben Sie einen Namen für die neue App ein, und legen Sie den Umleitungs-URI auf https://<workspace-url>/login/oauth/azure.html fest.
  5. Klicken Sie auf Registrieren.
  6. Kopieren Sie im Feld Essentials die Anwendungs-ID (Client-ID), und speichern Sie sie. Sie verwenden diesen Wert, um die Anwendung zu konfigurieren.
  7. Wählen Sie Zertifikate & Geheimnisse aus.
  8. Klicken Sie auf der Registerkarte Geheime Clientschlüssel auf Neuer geheimer Clientschlüssel.
  9. Geben Sie eine Beschreibung für das Geheimnis und einen Ablauf ein (die Standardeinstellung ist 180 Tage).
  10. Klicken Sie auf Hinzufügen.
  11. Kopieren Sie den generierten Wert für den geheimen Clientschlüssel.
  12. Klicken Sie auf API-Berechtigungen.
  13. Klicken Sie auf Berechtigung hinzufügen.
  14. Wählen Sie Azure SQL-Datenbank aus, und klicken Sie unter Delegierte Berechtigungen auf user_impersonation.
  15. Klicken Sie auf Berechtigungen hinzufügen.

Erstellen einer Verbindung

Eine Verbindung gibt einen Pfad und Anmeldeinformationen für den Zugriff auf ein externes Datenbanksystem an. Zum Erstellen einer Verbindung können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE CONNECTION“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden.

Hinweis

Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um eine Verbindung zu erstellen. Siehe POST /api/2.1/unity-catalog/connections und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“.

Katalog-Explorer

  1. Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Symbol „Katalog“ Katalog.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. Plussymbol Hinzufügen, und wählen Sie im Menü Verbindung hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Externe Daten , navigieren Sie zur Registerkarte Verbindungen, und klicken Sie auf Verbindung erstellen.

  3. Geben Sie einen benutzerfreundlichen Verbindungsnamen ein.

  4. Wählen Sie als Verbindungstypdie Option SQL Server aus.

  5. Wählen Sie als Authentifizierungstyp die Option OAuth oder Benutzername und Kennwort aus.

  6. Geben Sie je nach Authentifizierungsmethode die folgenden Verbindungseigenschaften für Ihre SQL Server-Instanz ein:

    • Host: Ihr SQL-Server
    • (Standardauthentifizierung) Port
    • (Standardauthentifizierung) trustServerCertificate: Der Standardwert lautet false. Wenn diese Eigenschaft auf true festgelegt wird, verwendet die Transportschicht SSL zum Verschlüsseln des Kanals und umgeht die Zertifikatkette zur Überprüfung der Vertrauensstellung. Übernehmen Sie den Standardwert bei dieser Einstellung, es sei denn, Sie müssen die Überprüfung der Vertrauensstellung umgehen.
    • (Standardauthentifizierung) Benutzer
    • (Standardauthentifizierung) Kennwort
    • (OAuth:) Autorisierungsendpunkt: Ihr Azure Entra-Autorisierungsendpunkt im Format https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize.
    • (OAuth:) Client-ID aus der App, die Sie erstellt haben.
    • (OAuth:) Geheimer Clientschlüssel aus dem geheimen Clientschlüssel, den Sie erstellt haben.
    • (OAuth:) Clientbereich: Geben Sie den folgenden Wert ohne Änderungen ein: https://database.windows.net/.default offline_access.
    • (OAuth:) Sie werden aufgefordert, sich bei Mit Azure Entra ID anmelden anzumelden. Geben Sie Ihren Azure-Benutzernamen und Ihr Kennwort ein. Nachdem Sie zur Erstellungsseite für die Verbindung umgeleitet wurden, wird der Autorisierungscode auf der Benutzeroberfläche ausgefüllt.
  7. (Optional) Klicken Sie auf Verbindung testen, um zu überprüfen, ob sie funktioniert.

  8. (Optional) Fügen Sie einen Kommentar hinzu.

  9. Klicken Sie auf Erstellen.

Hinweis

(OAuth:) Auf den OAuth-Endpunkt von Azure Entra ID muss über IP-Adressen der Azure Databricks-Steuerungsebene zugegriffen werden können. Weitere Informationen finden Sie unter Azure Databricks-Regionen.

SQL

Führen Sie in einem Notebook oder im Databricks SQL-Abfrage-Editor den folgenden Befehl aus.

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

Es wird empfohlen, Aure Databricks-Geheimnisse anstelle von Klartext-Zeichenfolgen für vertrauliche Werte wie Anmeldeinformationen zu verwenden. Beispiele:

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

Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.

Erstellen eines Fremdkatalogs

Ein Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können. Um einen fremden Katalog zu erstellen, verwenden Sie eine Verbindung mit der bereits definierten Datenquelle.

Zum Erstellen eines Fremdkatalogs können Sie den Katalog-Explorer oder den SQL-Befehl CREATE FOREIGN CATALOG in einem Azure Databricks-Notebook oder im SQL-Abfrage-Editor verwenden.

Hinweis

Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um einen Katalog zu erstellen. Siehe POST /api/2.1/unity-catalog/catalogs und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Sie benötigen die Berechtigung CREATE CATALOG für den Metastore und müssen entweder Besitzer der Verbindung sein oder die Berechtigung CREATE FOREIGN CATALOG für diese haben.

Katalog-Explorer

  1. Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Katalogsymbol Katalog, um den Katalog-Explorer zu öffnen.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. Plussymbol Hinzufügen, und wählen Sie im Menü Katalog hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Kataloge, und klicken Sie dann auf die Schaltfläche Katalog erstellen.

  3. Befolgen Sie die Anweisungen zum Erstellen von Fremdkataloge unter Erstellen von Katalogen.

SQL

Führen Sie den folgenden SQL-Befehl in einem Notebook oder SQL-Abfrage-Editor aus. Elemente in Klammern sind optional. Ersetzen Sie folgende Platzhalterwerte:

  • <catalog-name>: Name für den Katalog in Azure Databricks.
  • <connection-name>: Das Verbindungsobjekt, das die Datenquelle, den Pfad und die Anmeldeinformationen für den Zugriff angibt.
  • <database-name>: Name der Datenbank, die sie als Katalog in Azure Databricks spiegeln möchten.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Unterstützte Pushdowns

Die folgenden Pushdowns werden für alle Computeressourcen unterstützt:

  • Filter
  • Projektionen
  • Begrenzung
  • Funktionen: teilweise, nur für Filterausdrücke. (Zeichenfolgenfunktionen, mathematische Funktionen, Daten-, Zeit- und Zeitstempelfunktionen und andere verschiedene Funktionen wie Alias, Cast, SortOrder)

Die folgenden Pushdowns werden in Databricks Runtime 13.3 LTS und höher sowie in SQL Warehouse Compute unterstützt:

  • Aggregate
  • Die folgenden booleschen Operatoren: =, <, <=, >, >=, <=>
  • Die folgenden mathematischen Funktionen (werden nicht unterstützt, wenn ANSI deaktiviert ist): +, -, *, %, /
  • Die folgenden verschiedenen Operatoren: ^, |, ~
  • Sortierung bei Verwendung mit einem Grenzwert

Die folgenden Pushdowns werden nicht unterstützt:

  • Joins
  • Windows-Funktionen

Datentypzuordnungen

Wenn Sie von SQL Server zu Spark lesen, werden die Datentypen wie folgt zugeordnet:

SQL Server-Typ Spark-Typ
bigint (ohne Vorzeichen), decimal, money, numeric, smallmoney DecimalType
smallint, tinyint ShortType
int IntegerType
bigint (falls mit Vorzeichen) 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

*Wenn Sie aus SQL Server lesen, werden datetimes aus SQL Server dem TimestampTypein Spark zugeordnet, wenn preferTimestampNTZ = false ist (Standard). SQL Server-datetimes werden TimestampNTZType zugeordnet, wenn preferTimestampNTZ = true ist.