Köra externa frågor på Microsoft SQL Server
Den här artikeln beskriver hur du set upp Lakehouse Federation för att köra federerade frågor på SQL Server-data som inte hanteras av Azure Databricks. Mer information om Lakehouse Federation finns i Vad är Lakehouse Federation?.
Om du vill ansluta till DIN SQL Server-databas med Lakehouse Federation måste du skapa följande i ditt Azure Databricks Unity-Catalog metaarkiv:
- En anslutning till SQL Server-databasen.
- En extern catalog som speglar din SQL Server-databas i Unity Catalog så att du kan använda Unity Catalog frågesyntax och verktyg för datastyrning för att hantera användaråtkomst till databasen på Azure Databricks.
Lakehouse Federation stöder SQL Server, Azure SQL Database och Azure SQL Managed Instance.
Innan du börjar
Krav för arbetsyta:
- Arbetsyta aktiverad för Unity Catalog.
Beräkningskrav:
- Nätverksanslutning från beräkningsresursen till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
- Azure Databricks-beräkning måste använda Databricks Runtime 13.3 LTS eller senare och delad åtkomst eller enkel användaråtkomst.
- SQL-lager måste vara pro eller serverlösa och måste använda 2023.40 eller senare.
Behörigheter som krävs:
- Om du vill skapa en anslutning måste du vara metaarkivadministratör eller användare med
CREATE CONNECTION
behörighet på Unity Catalog metaarkiv som är kopplat till arbetsytan. - Om du vill skapa en extern catalogmåste du ha
CREATE CATALOG
behörighet i metaarkivet och antingen vara ägare till anslutningen eller haCREATE FOREIGN CATALOG
behörighet för anslutningen.
Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.
- Om du planerar att autentisera med OAuth registrerar du en app i Microsoft Entra-ID för Azure Databricks. Mer information finns i följande avsnitt.
(Valfritt) Registrera en app i Microsoft Entra ID för Azure Databricks
Om du vill autentisera med OAuth följer du det här steget innan du skapar en SQL Server-anslutning. Om du vill autentisera med ett användarnamn och lösenord i stället hoppar du över det här avsnittet.
- Logga in på Azure-portalen.
- I det vänstra navigeringsfältet klickar du på Microsoft Entra-ID.
- Klicka på Appregistreringar.
- Klicka på Ny registrering. Ange ett namn för den nya appen och set omdirigerings-URI:n till
https://<workspace-url>/login/oauth/azure.html
. - Klicka på Registrera.
- I rutan Essentials kopierar och lagrar du program-ID:t (klient). Du använder det här värdet för att konfigurera programmet.
- Klicka på Certifikat och hemligheter.
- På fliken Klienthemligheter klickar du på Ny klienthemlighet.
- Ange en beskrivning för hemligheten och en förfallotid (standardinställningen är 180 dagar).
- Klicka på Lägg till.
- Kopiera det genererade värdet för klienthemligheten.
- Klicka på API-behörigheter.
- Klicka på Lägg till en behörighet.
- Select Azure SQL Database och klicka på user_impersonation under Delegerade behörigheter.
- Klicka på Lägg till behörigheter.
Skapa en anslutning
En anslutning anger en sökväg och credentials för åtkomst till ett externt databassystem. Om du vill skapa en anslutning kan du använda Catalog Explorer eller kommandot CREATE CONNECTION
SQL i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.
Kommentar
Du kan också använda Databricks REST API eller Databricks CLI för att skapa en anslutning. Se kommandona POST /api/2.1/unity-catalog/connections och Unity Catalog.
Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION
Catalog Explorer
På din Azure Databricks-arbetsyta klickar du på ikonen Catalog.
Längst upp i fönstret Catalog klickar du på ikonen Ikonen Lägg till och selectLägg till en anslutning från menyn.
Från sidan Snabbåtkomst klickar du på knappen Externa data, går till fliken Connections och klickar på Skapa anslutning.
Ange ett användarvänligt Anslutningsnamnpå sidan Set i guiden för uppkoppling.
Select en anslutningstypSQL Server.
Select en autentiseringstyp av OAuth- eller användarnamn och lösenord (grundläggande autentisering).
(Valfritt) Lägg till en kommentar.
Klicka på Nästa.
På sidan Authentication anger du följande anslutningsegenskaper för SQL Server-instansen. Egenskaper som är specifika för den autentiseringsmetod som du har valt föregås av
Auth type
inom parenteser.- Värd: Din SQL-server.
- (Grundläggande autentisering) Hamn
- (Grundläggande autentisering) trustServerCertificate: Standardvärdet är
false
. När set tilltrue
använder transportlagret SSL för att kryptera kanalen och kringgår certifikatkedjan för att verifiera tillit. Låt den här set vara standard om du inte har ett specifikt behov av att kringgå förtroendevalidering. - (Grundläggande autentisering) Användare
- (Grundläggande autentisering) Lösenord
- (OAuth) Auktoriseringsslutpunkt: Din Azure Entra-auktoriseringsslutpunkt i formatet
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
. - (OAuth) Klient-ID från den app som du skapade.
- (OAuth) Klienthemlighet från den klienthemlighet som du skapade.
- (OAuth) OAuth-omfång: Ange följande värde utan ändringar:
https://database.windows.net/.default offline_access
. - (OAuth) Klicka på Logga in med Azure Entra ID. Ange ditt användarnamn och lösenord för Azure. När du har omdirigerats till sidan autentisering fylls auktoriseringskoden i användargränssnittet.
Klicka på Skapa anslutning.
(Grundläggande autentisering) På sidan Anslutningsinformation anger du följande:
- Förtroendeservercertifikat: Detta avmarkeras som standard. När du väljer det här alternativet använder transportlagret SSL för att kryptera kanalen och kringgår certifikatkedjan för att verifiera förtroendet. Låt den här set vara standard om du inte har ett specifikt behov av att kringgå förtroendevalidering.
- Program avsikt: Programmets arbetsbelastningstyp när du ansluter till en server.
Klicka på Nästa.
På sidan Catalog grundläggande anger du ett namn för den externa catalog. En extern catalog speglar en databas i ett externt datasystem så att du kan fråga och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog.
(Valfritt) Klicka på Testa anslutning för att bekräfta att den fungerar.
Klicka på Skapa catalog.
På sidan Accessselect de arbetsytor där användarna kan komma åt catalog du skapade. Du kan selectAlla arbetsytor har åtkomsteller klicka på Tilldela till arbetsytor, select arbetsytorna och klicka sedan på Tilldela.
Ändra ägare som ska kunna hantera åtkomst till alla objekt i catalog. Börja skriva en principal i textrutan och klicka sedan på principeln i de returnerade resultaten.
Grant Privileges på catalog. Klicka på Grant:
- Ange principals som ska ha åtkomst till objekt i catalog. Börja skriva en principal i textrutan och klicka sedan på principeln i de returnerade resultaten.
-
Select
Privilege förinställningar för grant till varje huvudman. Alla kontoanvändare beviljas
BROWSE
som standard.-
Select
dataläsare från den nedrullningsbara menyn för grant
read
behörigheter på objekt i catalog. -
Select
Dataredigerare från den nedrullningsbara menyn till grant
read
ochmodify
behörigheter på objekt i catalog. - select manuellt behörigheterna gällande grant.
-
Select
dataläsare från den nedrullningsbara menyn för grant
- Klicka på Grant.
Klicka på Nästa.
På sidan metadata anger du taggar för nyckel/värde-par. För mer information, se Tillämpa taggar på Unity Catalog skyddsbara objekt.
(Valfritt) Lägg till en kommentar.
Klicka på Spara.
Kommentar
(OAuth) Azure Entra ID OAuth-slutpunkten måste vara tillgänglig från Azure Databricks-kontrollplanets IP-adresser. Se Azure Databricks-regioner.
SQL
Kör följande kommando i en notebook-fil eller Databricks SQL-frågeredigeraren.
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Vi rekommenderar att du använder Azure Databricks hemligheter i stället för textsträngar för känsliga values som credentials. Till exempel:
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>')
)
Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.
Skapa en främmande catalog
Kommentar
Om du använder användargränssnittet för att skapa en anslutning till datakällan ingår skapandet av "foreign catalog", och du kan hoppa över detta steg.
En extern catalog speglar en databas i ett externt datasystem så att du kan fråga och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. För att skapa en extern cataloganvänder du en anslutning till den definierade datakällan.
Om du vill skapa en utlänsk catalogkan du använda Catalog Explorer eller kommandot CREATE FOREIGN CATALOG
SQL i en Azure Databricks-anteckningsbok eller SQL-frågeredigeraren.
Du kan också använda Databricks REST API eller Databricks CLI för att skapa en catalog. Se kommandona POST /api/2.1/unity-catalog/catalogs och Unity Catalog.
Behörigheter som krävs:CREATE CATALOG
behörighet för metaarkivet och antingen ägarskap för anslutningen eller behörigheten CREATE FOREIGN CATALOG
för anslutningen.
Catalog Explorer
På din Azure Databricks-arbetsyta klickar du på ikonen Catalog för att öppna Catalog Explorer.
Längst upp i fönstret Catalog klickar du på ikonen och Lägg till ikon samt på selectLägg till en catalog från menyn.
Alternativt, från sidan Snabbåtkomst, klickar du på knappen Catalogs och klickar sedan på knappen Skapa catalog.
Följ anvisningarna för att skapa utländska catalogs i blocket Skapa catalogs.
SQL
Kör följande SQL-kommando i en notebook- eller SQL-frågeredigerare. Objekt inom hakparenteser är valfria. Ersätt platshållaren values:
-
<catalog-name>
: Namn på catalog i Azure Databricks. -
<connection-name>
: Det anslutningsobjektet som anger datakällan, sökvägen och åtkomsten credentials. -
<database-name>
: Namnet på databasen som du vill spegla som en catalog i Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Pushdowns som stöds
Följande pushdowns stöds för all beräkning:
- Filter
- Projektioner
- Limit
- Funktioner: partiell, endast för filteruttryck. (Strängfunktioner, matematiska funktioner, data, tidsstämpel och tidsstämpelfunktioner och andra diverse funktioner, till exempel Alias, Cast, SortOrder)
Följande pushdowns stöds på Databricks Runtime 13.3 LTS och senare och på SQL Warehouse-beräkning:
- Aggregeringar
- Följande booleska operatorer: =, <, <=, >, >=, <=>
- Följande matematiska funktioner (stöds inte om ANSI är inaktiverat): +, -, *, %, /
- Följande övriga operatorer: ^, |, ~
- Sortering, när den används med limit
Följande pushdowns stöds inte:
- Kopplingar
- Windows-funktioner
Datatypsmappningar
När du läser från SQL Server till Spark mappar datatyper på följande sätt:
SQL Server-typ | Spark-typ |
---|---|
bigint (osignerad), decimal, pengar, numeriska, smallmoney | Decimaltyp |
smallint, tinyint | ShortType |
heltal | IntegerType |
bigint (om signerad) | LongType |
real | FloatType |
flyttal | DoubleType |
char, nchar, uniqueidentifier | CharType |
nvarchar, varchar | VarcharType |
text, xml | StringType |
binär, geografi, geometri, bild, tidsstämpel, udt, varbinary | BinaryType |
bit | BooleanType |
datum | DateType |
datetime, datetime, smalldatetime, time | TidsstämpelTyp/tidsstämpelNTZType |
*När du läser från SQL Server mappas SQL Server datetimes
till Spark TimestampType
om preferTimestampNTZ = false
(standard). SQL Server datetimes
mappas till TimestampNTZType
om preferTimestampNTZ = true
.