Dela via


Köra externa frågor på Microsoft SQL Server

Den här artikeln beskriver hur du konfigurerar 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 metaarkivet i Azure Databricks Unity Catalog:

  • En anslutning till SQL Server-databasen.
  • En sekundär katalog 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 Azure Databricks-användaråtkomst till databasen.

Lakehouse Federation stöder SQL Server, Azure SQL Database och Azure SQL Managed Instance.

Innan du börjar

Krav för arbetsyta:

  • Arbetsytan är 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 behörigheten CREATE CONNECTION på Unity Catalog-metaarkivet som är kopplat till arbetsytan.
  • Om du vill skapa en extern katalog måste du ha behörigheten CREATE CATALOG för metaarkivet och antingen vara ägare till anslutningen eller ha behörighet för CREATE FOREIGN CATALOG 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.

  1. Logga in på Azure-portalen.
  2. I det vänstra navigeringsfältet klickar du på Microsoft Entra-ID.
  3. Klicka på Appregistreringar.
  4. Klicka på Ny registrering. Ange ett namn för den nya appen och ange omdirigerings-URI:n till https://<workspace-url>/login/oauth/azure.html.
  5. Klicka på Registrera.
  6. I rutan Essentials kopierar och lagrar du program-ID:t (klient). Du använder det här värdet för att konfigurera programmet.
  7. Klicka på Certifikat och hemligheter.
  8. På fliken Klienthemligheter klickar du på Ny klienthemlighet.
  9. Ange en beskrivning för hemligheten och en förfallotid (standardinställningen är 180 dagar).
  10. Klicka på Lägg till.
  11. Kopiera det genererade värdet för klienthemligheten.
  12. Klicka på API-behörigheter.
  13. Klicka på Lägg till en behörighet.
  14. Välj Azure SQL Database och klicka på user_impersonation under Delegerade behörigheter.
  15. Klicka på Lägg till behörigheter.

Skapa en anslutning

En anslutning anger en sökväg och autentiseringsuppgifter för åtkomst till ett externt databassystem. Om du vill skapa en anslutning kan du använda Catalog Explorer eller CREATE CONNECTION SQL-kommandot 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 POST /api/2.1/unity-catalog/connections och Unity Catalog-kommandon.

Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på KatalogikonKatalog.

  2. Längst upp i fönstret Katalog klickar du påAdd or plus iconikonen Lägg till och väljer Lägg till en anslutning på menyn.

    Du kan också klicka på knappen Externa data på sidan Snabbåtkomst, gå till fliken Anslutningar och klicka på Skapa anslutning.

  3. Ange ett användarvänligt anslutningsnamn.

  4. Välj en anslutningstyp för SQL Server.

  5. Välj en autentiseringstyp av OAuth eller Användarnamn och lösenord.

  6. Ange följande anslutningsegenskaper för DIN SQL Server-instans, beroende på din autentiseringsmetod:

    • Värd: Din SQL-server.
    • (Grundläggande autentisering) Hamn
    • (Grundläggande autentisering) trustServerCertificate: Standardvärdet är false. När det är inställt på trueanvänder transportlagret SSL för att kryptera kanalen och kringgår certifikatkedjan för att verifiera förtroendet. Låt den här inställningen 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) Klientomfång: Ange följande värde utan ändringar: https://database.windows.net/.default offline_access.
    • (OAuth) Du uppmanas att logga in på Logga in med Azure Entra-ID. Ange ditt användarnamn och lösenord för Azure. När du har omdirigerats till sidan för att skapa anslutningen fylls auktoriseringskoden i användargränssnittet.
  7. (Valfritt) Välj ett alternativ i listrutan Programavsikt (Standard: Read write).

  8. (Valfritt) Klicka på Testa anslutning för att bekräfta att den fungerar.

  9. (Valfritt) Lägg till en kommentar.

  10. Klicka på Skapa.

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 klartextsträngar för känsliga värden som autentiseringsuppgifter. 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 sekundär katalog

En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. Om du vill skapa en sekundär katalog använder du en anslutning till datakällan som redan har definierats.

Om du vill skapa en sekundär katalog kan du använda Catalog Explorer eller CREATE FOREIGN CATALOG SQL-kommandot i en Azure Databricks-notebook-fil eller SQL-frågeredigeraren.

Kommentar

Du kan också använda Databricks REST API eller Databricks CLI för att skapa en katalog. Se POST /api/2.1/unity-catalog/catalogs och Unity Catalog-kommandon.

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.

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på KatalogikonKatalog för att öppna Katalogutforskaren.

  2. Längst upp i fönstret Katalog klickar du på Lägg till eller plusikon ikonen Lägg till och väljer Lägg till en katalog på menyn.

    Du kan också klicka på knappen Kataloger på sidan Snabbåtkomst och sedan på knappen Skapa katalog.

  3. Följ anvisningarna för att skapa utländska kataloger i Skapa kataloger.

SQL

Kör följande SQL-kommando i en notebook- eller SQL-frågeredigerare. Objekt inom hakparenteser är valfria. Ersätt platshållarvärdena:

  • <catalog-name>: Namn på katalogen i Azure Databricks.
  • <connection-name>: Anslutningsobjektet som anger autentiseringsuppgifterna för datakälla, sökväg och åtkomst.
  • <database-name>: Namnet på den databas som du vill spegla som en katalog 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
  • Gräns
  • 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 gräns

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.