Federatieve query's uitvoeren op Microsoft SQL Server
In dit artikel wordt beschreven hoe u Lakehouse Federation set 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 buitenlandse catalog die uw SQL Server-database spiegelt in Unity Catalog, zodat u Unity Catalog querysyntaxis en hulpprogramma's voor gegevensbeheer kunt gebruiken om azure Databricks-gebruikerstoegang tot de database te beheren.
Lakehouse Federation ondersteunt SQL Server, Azure SQL Database en Azure SQL Managed Instance.
Voordat u begint
Vereisten voor werkruimte:
- Werkruimte ingeschakeld voor Unity Catalog.
Rekenvereisten:
- Netwerkconnectiviteit van uw rekenresource naar de doeldatabasesystemen. Zie De aanbevelingen voor netwerken voor Lakehouse Federation.
- Azure Databricks Compute moet Databricks Runtime 13.3 LTS of hoger gebruiken en gedeelde of standaard voor toegang door één gebruiker.
- SQL-warehouses moeten pro of serverloos 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 bevoegdheid
CREATE CONNECTION
op de Unity Catalog metastore die is gekoppeld aan de werkruimte. - Als u een buitenlandse catalogwilt maken, moet u de
CREATE CATALOG
machtiging hebben voor de metastore en de eigenaar van de verbinding zijn of deCREATE FOREIGN CATALOG
bevoegdheid op de verbinding hebben.
Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.
- Als u van plan bent om te verifiëren met behulp van OAuth, 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 wilt verifiëren met behulp van OAuth, 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.
- Meld u aan bij het Azure-portaal.
- Klik in het linkernavigatievenster op Microsoft Entra-id.
- Klik op App-registraties.
- Klik op Nieuwe registratie. Voer een naam in voor de nieuwe app en set de omleidings-URI naar
https://<workspace-url>/login/oauth/azure.html
. - Klik op Registreren.
- Kopieer en sla in het vak Essentials de toepassings-id (client) op. U gebruikt deze waarde om de toepassing te configureren.
- Klik op Certificaten en geheimen.
- Klik op het tabblad Clientgeheimen op Nieuw clientgeheim.
- Voer een beschrijving in voor het geheim en een vervaldatum (de standaardinstelling is 180 dagen).
- Klik op Toevoegen.
- Kopieer de gegenereerde waarde voor het clientgeheim.
- Klik op API-machtigingen.
- Klik op Een machtiging toevoegen.
- Select Azure SQL Database- en klik op user_impersonation onder Gedelegeerde machtigingen.
- Klik op Machtigingen toevoegen.
Een verbinding maken
Een verbinding specificeert een pad en credentials 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.
Notitie
U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een verbinding te maken. Zie POST /api/2.1/unity-catalog/connections en Unity-opdrachten Catalog.
Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION
bevoegdheid.
Catalog Explorer
Klik in uw Azure Databricks-werkruimte op Catalog.
Klik boven aan het deelvenster Catalog op het pictogram pictogram toevoegen en selectEen verbinding toevoegen vanuit het menu.
U kunt ook op de pagina Snelle toegang op de knop Externe gegevens klikken, naar het tabblad Connections gaan en op Verbinding makenklikken.
Voer op de pagina Basisbeginselen van de Set op verbinding wizard een gebruiksvriendelijke Verbindingsnaamin.
Select een verbindingstype van SQL Server.
Select een verificatietype van OAuth of gebruikersnaam en wachtwoord (basisverificatie).
(Optioneel) Voeg een opmerking toe.
Klik op Volgende.
Voer op de pagina Authentication de volgende verbindingseigenschappen in voor uw SQL Server-exemplaar. Eigenschappen die specifiek zijn voor de verificatiemethode die u hebt geselecteerd, worden voorafgegaan door de
Auth type
tussen haakjes.- Host: uw SQL-server.
- (Basisverificatie) Haven
- (Basisverificatie) trustServerCertificate: standaard ingesteld op
false
. Wanneer set naartrue
, gebruikt de transportlaag SSL om het kanaal te versleutelen en omzeilt de certificaatketen om het vertrouwen te valideren. Laat deze set op de standaardwaarde staan, tenzij u een specifieke noodzaak hebt om vertrouwensvalidatie te omzeilen. - (Basisverificatie) Gebruiker
- (Basisverificatie) Wachtwoord
- (OAuth) Autorisatie-eindpunt: uw Azure Entra-autorisatie-eindpunt in de indeling
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
. - (OAuth) Client-id van de app die u hebt gemaakt.
- (OAuth) Clientgeheim van het clientgeheim dat u hebt gemaakt.
- (OAuth) OAuth-bereik: voer de volgende waarde in zonder wijzigingen:
https://database.windows.net/.default offline_access
. - (OAuth) Klik op Aanmelden met Azure Entra ID. Voer uw Azure-gebruikersnaam en -wachtwoord in. Nadat u bent omgeleid naar de pagina Verificatie, wordt de autorisatiecode ingevuld in de gebruikersinterface.
Klik op Verbinding maken.
(Basisverificatie) Geef op de pagina Verbindingsgegevens het volgende op:
- Servercertificaat vertrouwen: dit is standaard uitgeschakeld. Wanneer deze optie is geselecteerd, gebruikt de transportlaag SSL om het kanaal te versleutelen en wordt de certificaatketen omzeild om de vertrouwensrelatie te valideren. Laat deze set op de standaardwaarde staan, tenzij u een specifieke noodzaak hebt om vertrouwensvalidatie te omzeilen.
- toepassingsintentie: het type toepassingsworkload wanneer u verbinding maakt met een server.
Klik op Volgende.
Voer op de Catalog basis pagina een naam in voor de vreemde catalog. Een vreemde catalog spiegelt een database in een extern gegevenssysteem, zodat u gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog.
(Optioneel) Klik op Verbinding testen om te bevestigen dat deze werkt.
Klik op om catalogte maken.
Op de pagina Accessselect u de werkruimten waarin gebruikers toegang hebben tot de catalog die u hebt gemaakt. U kunt selectAlle werkruimten hebben toegangof klik op Toewijzen aan werkruimten, select de werkruimten en klik vervolgens op Toewijzen.
Wijzig de Eigenaar die de toegang tot alle objecten in de catalogkan beheren. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.
Grant bevoegdheden op de catalog. Klik op Grant:
- Geef de Principals op die toegang hebben tot objecten in de catalog. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.
-
Select de bevoegdheden vooraf ingesteld om aan elke principal grant toe te wijzen. Alle accountgebruikers krijgen standaard
BROWSE
toegewezen.-
Select
Gegevenslezer uit de vervolgkeuzelijst om grant
read
bevoegdheden voor objecten in de catalogte verkrijgen. -
Select
Gegevenseditor in de vervolgkeuzelijst naar grant
read
enmodify
bevoegdheden voor objecten in de catalog. - select de bevoegdheden voor granthandmatig.
-
Select
Gegevenslezer uit de vervolgkeuzelijst om grant
- Klik op Grant.
Klik op Volgende.
Geef op de pagina Metagegevens tags sleutel-waardeparen op. Zie Tags toepassen op Unity Catalog beveiligbare objectenvoor meer informatie.
(Optioneel) Voeg een opmerking toe.
Klik op Opslaan.
Notitie
(OAuth) 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 values, zoals credentials. 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 buitenlandse catalog creëren
Notitie
Als u de gebruikersinterface gebruikt om een verbinding met de gegevensbron te maken, is het maken van een externe catalog inbegrepen en kunt u deze stap overslaan.
Een vreemde catalog spiegelt een database in een extern gegevenssysteem, zodat u gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog. Om een vreemde catalogte maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.
Om een vreemd catalogte maken, kunt u Catalog Explorer of de CREATE FOREIGN CATALOG
SQL-opdracht gebruiken in een Azure Databricks-notebook of in de SQL-queryeditor.
U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een catalogte maken. Zie POST /api/2.1/unity-catalog/catalogs en Unity-opdrachten Catalog.
Vereiste machtigingen:CREATE CATALOG
machtiging voor de metastore en eigendom van de verbinding of de CREATE FOREIGN CATALOG
bevoegdheid voor de verbinding.
Catalog Explorer
Klik in uw Azure Databricks-werkruimte op Catalog om Catalog Explorer te openen.
Klik bovenaan het deelvenster Catalog op het Toevoegen-icoon en selecteer selectuit het menu een catalog.
U kunt ook op de pagina Snelle toegang op de knop Catalogs klikken en vervolgens op de knop catalog maken klikken.
Volg de instructies om buitenlandse catalogs te maken in , catalogs,.
SQL
Voer de volgende SQL-opdracht uit in een notebook of SQL-queryeditor. Items tussen haakjes zijn optioneel. Vervang de tijdelijke aanduiding values:
-
<catalog-name>
: naam voor de catalog in Azure Databricks. -
<connection-name>
: het verbindingsobject waarmee de gegevensbron, het pad en de toegang credentialsworden opgegeven. -
<database-name>
: de naam van de database die u wilt repliceren als catalog 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
- Limit
- 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 limit
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, tinyint | ShortType |
int | 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
.