Udostępnij za pośrednictwem


Uruchamianie zapytań federacyjnych w programie Microsoft SQL Server

W tym artykule opisano sposób set federacji usługi Lakehouse w celu uruchamiania zapytań federacyjnych na danych programu SQL Server, które nie są zarządzane przez usługę Azure Databricks. Aby dowiedzieć się więcej o federacji Lakehouse, zobacz Co to jest Federacja Lakehouse?.

Aby nawiązać połączenie z bazą danych programu SQL Server przy użyciu usługi Lakehouse Federation, należy utworzyć następujące elementy w magazynie metadanych usługi Azure Databricks Unity Catalog:

  • Połączenie z bazą danych programu SQL Server.
  • obce catalog, które dubluje bazę danych programu SQL Server w środowisku Unity Catalog, dzięki czemu można użyć składni zapytań Unity Catalog oraz narzędzi do zarządzania danymi w celu kontrolowania dostępu użytkowników za pomocą Azure Databricks do bazy danych.

Usługa Lakehouse Federation obsługuje programy SQL Server, Azure SQL Database i Azure SQL Managed Instance.

Zanim rozpoczniesz

Wymagania dotyczące obszaru roboczego:

  • Włączono obszar roboczy dla Unity Catalog.

Wymagania dotyczące obliczeń:

  • Łączność sieciowa od zasobu obliczeniowego do docelowych systemów baz danych. Zobacz Zalecenia dotyczące sieci dla usługi Lakehouse Federation.
  • Obliczenia Azure Databricks muszą używać Databricks Runtime 13.3 LTS lub nowszego oraz trybu dostępu Udostępniony lub Pojedynczego użytkownika .
  • Magazyny SQL muszą być w wersji pro lub bezserwerowej i muszą używać wersji 2023.40 lub nowszej.

Wymagane uprawnienia:

  • Aby utworzyć połączenie, musisz być administratorem metastore'u lub użytkownikiem z uprawnieniem CREATE CONNECTION w metastore Unity Catalog przypisanym do obszaru roboczego.
  • Aby utworzyć zagraniczną catalog, musisz mieć uprawnienie CREATE CATALOG w magazynie metadanych i być właścicielem połączenia lub mieć przywilej CREATE FOREIGN CATALOG do połączenia.

Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji opartej na zadaniach.

  • Jeśli planujesz uwierzytelnianie przy użyciu protokołu OAuth, zarejestruj aplikację w usłudze Microsoft Entra ID dla usługi Azure Databricks. Aby uzyskać szczegółowe informacje, zobacz następującą sekcję.

(Opcjonalnie) Rejestrowanie aplikacji w usłudze Microsoft Entra ID dla usługi Azure Databricks

Jeśli chcesz uwierzytelnić się przy użyciu protokołu OAuth, wykonaj ten krok przed utworzeniem połączenia z programem SQL Server. Aby zamiast tego uwierzytelnić się przy użyciu nazwy użytkownika i hasła, pomiń tę sekcję.

  1. Zaloguj się w witrynie Azure Portal.
  2. W obszarze nawigacji po lewej stronie kliknij pozycję Microsoft Entra ID.
  3. Kliknij Rejestracje aplikacji.
  4. Kliknij pozycję Nowa rejestracja. Wprowadź nazwę nowej aplikacji i set identyfikator URI przekierowania na https://<workspace-url>/login/oauth/azure.html.
  5. Kliknij pozycję Zarejestruj.
  6. W polu Podstawy skopiuj i zapisz identyfikator aplikacji (klienta). Ta wartość zostanie użyta do skonfigurowania aplikacji.
  7. Kliknij pozycję Certyfikaty i wpisy tajne.
  8. Na karcie Wpisy tajne klienta kliknij pozycję Nowy klucz tajny klienta.
  9. Wprowadź opis wpisu tajnego i wygaśnięcie (ustawienie domyślne to 180 dni).
  10. Kliknij przycisk Dodaj.
  11. Skopiuj wygenerowaną wartość klucza tajnego klienta.
  12. Kliknij pozycję Uprawnienia interfejsu API.
  13. Kliknij pozycję Dodaj uprawnienie.
  14. SelectAzure SQL Database i kliknij user_impersonation w sekcji Uprawnienia delegowane.
  15. Kliknij pozycję Dodaj uprawnienia.

Tworzenie połączenia

Połączenie określa ścieżkę i credentials na potrzeby uzyskiwania dostępu do zewnętrznego systemu bazy danych. Aby utworzyć połączenie, możesz użyć eksploratora Catalog lub polecenia CREATE CONNECTION SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.

Uwaga

Do utworzenia połączenia można również użyć interfejsu API REST usługi Databricks lub interfejsu wiersza polecenia usługi Databricks. Zobacz POST /api/2.1/unity-catalog/connections i polecenia Unity Catalog.

Wymagane uprawnienia: administrator magazynu metadanych lub użytkownik z uprawnieniami CREATE CONNECTION .

Eksplorator Catalog

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę CatalogCatalog.

  2. W górnej części okienka Catalog kliknij ikonę Dodaj lub plusIkona Dodaj i selectDodaj połączenie z menu.

    Alternatywnie na stronie szybki dostęp do kliknij przycisk zewnętrzne dane zewnętrzne, przejdź do karty , a następnie kliknij pozycję Utwórz połączenie.

  3. Na stronie Podstawowe informacje o połączeniu kreatora Set połączenia wprowadź przyjazną dla użytkownika nazwę połączenia .

  4. Select typ połączenia programu SQL Server.

  5. Select typ uwierzytelniania OAuth lub nazwa użytkownika i hasło (uwierzytelnianie podstawowe).

  6. (Opcjonalnie) Dodaj komentarz.

  7. Kliknij przycisk Dalej.

  8. Na stronie Authentication (Uwierzytelnianie) wprowadź następujące właściwości połączenia dla wystąpienia programu SQL Server. Właściwości specyficzne dla wybranej metody uwierzytelniania są poprzedzone Auth type w nawiasach.

    • Host: Serwer SQL.
    • (Uwierzytelnianie podstawowe) Port
    • (Uwierzytelnianie podstawowe) trustServerCertificate: wartość domyślna to false. W przypadku set do truewarstwa transportu używa protokołu SSL do szyfrowania kanału i pomija łańcuch certyfikatów w celu zweryfikowania zaufania. Pozostaw tę set na domyślnej, chyba że istnieje określona potrzeba obejścia weryfikacji zaufania.
    • (Uwierzytelnianie podstawowe) Użytkownik
    • (Uwierzytelnianie podstawowe) Hasło
    • (OAuth) Punkt końcowy autoryzacji: punkt końcowy autoryzacji usługi Azure Entra w formacie https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize.
    • (OAuth) Identyfikator klienta z utworzonej aplikacji.
    • (OAuth) Wpis tajny klienta z utworzonego wpisu tajnego klienta.
    • (OAuth) zakres OAuth: wprowadź następującą wartość bez żadnych modyfikacji: https://database.windows.net/.default offline_access.
    • (OAuth) Kliknij Zaloguj się z Azure Entra ID. Wprowadź nazwę użytkownika i hasło platformy Azure. Po przekierowaniu do strony uwierzytelniania kod autoryzacji zostanie wypełniony w interfejsie użytkownika.
  9. Kliknij pozycję Utwórz połączenie.

  10. (Uwierzytelnianie podstawowe) Na stronie Szczegóły połączenia określ następujące informacje:

    • certyfikat serwera zaufania: jest to domyślnie zaznaczone. Po wybraniu warstwa transportu używa protokołu SSL do szyfrowania kanału i pomija łańcuch certyfikatów w celu zweryfikowania zaufania. Pozostaw tę set na domyślnej, chyba że istnieje określona potrzeba obejścia weryfikacji zaufania.
    • intencja aplikacji: typ obciążenia aplikacji podczas nawiązywania połączenia z serwerem.
  11. Kliknij przycisk Dalej.

  12. Na stronie Catalog podstawowe wprowadź nazwę obcego catalog. Zagraniczny catalog dubluje bazę danych w zewnętrznym systemie danych, dzięki czemu można wykonywać zapytania dotyczące dostępu do danych w tej bazie danych i zarządzać nimi przy użyciu usług Azure Databricks i Unity Catalog.

  13. (Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.

  14. Kliknij pozycję Utwórz catalog.

  15. Na stronie Accessselect obszary robocze, w których użytkownicy mogą uzyskiwać dostęp do utworzonego catalog. Możesz selectzapewnić dostęp wszystkim obszarom roboczymlub kliknij Przypisz do obszarów roboczych, wybierz obszary robocze select, a następnie kliknij Przypisz.

  16. Zmień właściciela , który będzie miał możliwość zarządzania dostępem do wszystkich obiektów w catalog. Zacznij wpisywać główny element w polu tekstowym, a następnie kliknij ten element w zwróconych wynikach.

  17. Grant uprawnienia w catalog. Kliknij Grant

    1. Określ Principals, którzy będą mieli dostęp do obiektów w catalog. Zacznij wpisywać główny element w polu tekstowym, a następnie kliknij ten element w zwróconych wynikach.
    2. Select przypisuje ustawienia wstępne uprawnień grant do każdego podmiotu. Wszyscy użytkownicy konta mają przyznane BROWSE domyślnie.
      • Select czytnik danych z menu rozwijanego, aby ustawić grantread uprawnienia do obiektów w catalog.
      • Select Edytor danych z menu rozwijanego do grantread i modify uprawnienia do obiektów w catalog.
      • Ręcznie select uprawnienia do grant.
    3. Kliknij pozycję Grant.
  18. Kliknij przycisk Dalej.

  19. Na stronie Metadane określ pary klucz-wartość tagów. Aby uzyskać więcej informacji, zobacz Zastosuj tagi do Unity Catalog zabezpieczanych obiektów.

  20. (Opcjonalnie) Dodaj komentarz.

  21. Kliknij pozycję Zapisz.

Uwaga

(OAuth) Punkt końcowy OAuth identyfikatora usługi Azure Entra musi być dostępny z adresów IP płaszczyzny sterowania usługi Azure Databricks. Zobacz Regiony usługi Azure Databricks.

SQL

Uruchom następujące polecenie w notesie lub edytorze zapytań SQL usługi Databricks.

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

Zalecamy używanie wpisów tajnych usługi Azure Databricks zamiast ciągów w postaci zwykłego tekstu w przypadku poufnych values, takich jak credentials. Na przykład:

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

Aby uzyskać informacje na temat konfigurowania wpisów tajnych, zobacz Zarządzanie wpisami tajnymi.

Stwórz obce catalog

Uwaga

Jeśli używasz interfejsu użytkownika do utworzenia połączenia ze źródłem danych, tworzenie obcego catalog jest uwzględnione i możesz pominąć ten krok.

Zagraniczny catalog dubluje bazę danych w zewnętrznym systemie danych, dzięki czemu można wykonywać zapytania dotyczące dostępu do danych w tej bazie danych i zarządzać nimi przy użyciu usług Azure Databricks i Unity Catalog. Aby utworzyć zagraniczne catalog, należy użyć połączenia z wcześniej zdefiniowanym źródłem danych.

Aby utworzyć obce catalog, możesz użyć eksploratora Catalog lub polecenia CREATE FOREIGN CATALOG SQL w notatniku usługi Azure Databricks lub edytorze zapytań SQL.

Możesz również użyć interfejsu API REST usługi Databricks lub interfejsu wiersza polecenia usługi Databricks, aby utworzyć catalog. Zobacz POST /api/2.1/unity-catalog/catalogs i polecenia Unity Catalog.

Wymagane uprawnienia:CREATE CATALOG uprawnienie do magazynu metadanych i własność połączenia lub CREATE FOREIGN CATALOG uprawnienia do połączenia.

Eksplorator Catalog

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę CatalogCatalog, aby otworzyć eksploratora Catalog.

  2. W górnej części okienka Catalog kliknij ikonę Dodaj lub plusIkona Dodaj i selectDodaj catalog z menu.

    Alternatywnie na stronie Szybki dostęp kliknij przycisk Catalogs, a następnie kliknij przycisk Utwórz catalog.

  3. Postępuj zgodnie z instrukcjami dotyczącymi tworzenia obcych catalogs w usłudze Create catalogs.

SQL

Uruchom następujące polecenie SQL w notesie lub edytorze zapytań SQL. Elementy w nawiasach kwadratowych są opcjonalne. Zastąp symbol zastępczy values:

  • <catalog-name>: nazwa catalog w usłudze Azure Databricks.
  • <connection-name>: obiekt połączenia określający źródło danych, ścieżkę i dostęp credentials.
  • <database-name>: nazwa bazy danych, którą chcesz dublować jako catalog w usłudze Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Obsługiwane wypychania

Następujące wypychania są obsługiwane we wszystkich obliczeniach:

  • Filtry
  • Projekcje
  • Limit
  • Funkcje: częściowe, tylko dla wyrażeń filtru. (Funkcje ciągów, Funkcje matematyczne, Dane, Czas i Sygnatura czasowa oraz inne różne funkcje, takie jak Alias, Cast, SortOrder)

Następujące wypychania są obsługiwane w środowisku Databricks Runtime 13.3 LTS i nowszym oraz w obliczeniach usługi SQL Warehouse:

  • Agregacje
  • Następujące operatory logiczne: =, <, <=, >, >= , = <>
  • Następujące funkcje matematyczne (nieobsługiwane, jeśli usługa ANSI jest wyłączona): +, -, -, *, %, /
  • Następujące różne operatory: ^, |, ~
  • Sortowanie w przypadku użycia z limit

Następujące wypychania nie są obsługiwane:

  • Sprzężenia
  • Funkcje systemu Windows

Mapowanie typu danych

Podczas odczytywania z programu SQL Server do platformy Spark typy danych są mapowe w następujący sposób:

Typ programu SQL Server Typ platformy Spark
bigint (bez znaku), dziesiętny, pieniądze, numeryczne, małymoney Typ dziesiętny
smallint, tinyint ShortType
int Typ liczby całkowitej
bigint (jeśli jest podpisany) LongType
rzeczywiste FloatType
liczba zmiennoprzecinkowa DoubleType
char, nchar, uniqueidentifier Typ char
nvarchar, varchar VarcharType
tekst, xml StringType
binary, geography, geometry, image, timestamp, udt, varbinary BinaryType
bitowe Typ logiczny
data Typ daty
datetime, datetime, smalldatetime, time TimestampType/TimestampNTZType

*Podczas odczytywania z programu SQL Server program SQL Server datetimes jest mapowany na platformę Spark TimestampType , jeśli preferTimestampNTZ = false (wartość domyślna). Program SQL Server datetimes jest mapowany na TimestampNTZType wartość if preferTimestampNTZ = true.