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ć przywilejCREATE 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ę.
- Zaloguj się w witrynie Azure Portal.
- W obszarze nawigacji po lewej stronie kliknij pozycję Microsoft Entra ID.
- Kliknij Rejestracje aplikacji.
- Kliknij pozycję Nowa rejestracja. Wprowadź nazwę nowej aplikacji i set identyfikator URI przekierowania na
https://<workspace-url>/login/oauth/azure.html
. - Kliknij pozycję Zarejestruj.
- W polu Podstawy skopiuj i zapisz identyfikator aplikacji (klienta). Ta wartość zostanie użyta do skonfigurowania aplikacji.
- Kliknij pozycję Certyfikaty i wpisy tajne.
- Na karcie Wpisy tajne klienta kliknij pozycję Nowy klucz tajny klienta.
- Wprowadź opis wpisu tajnego i wygaśnięcie (ustawienie domyślne to 180 dni).
- Kliknij przycisk Dodaj.
- Skopiuj wygenerowaną wartość klucza tajnego klienta.
- Kliknij pozycję Uprawnienia interfejsu API.
- Kliknij pozycję Dodaj uprawnienie.
- SelectAzure SQL Database i kliknij user_impersonation w sekcji Uprawnienia delegowane.
- 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
W obszarze roboczym usługi Azure Databricks kliknij ikonę Catalog.
W górnej części okienka Catalog kliknij ikonę Ikona 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 .Na stronie Podstawowe informacje o połączeniu kreatora Set połączenia wprowadź przyjazną dla użytkownika nazwę połączenia .
Select typ połączenia programu SQL Server.
Select typ uwierzytelniania OAuth lub nazwa użytkownika i hasło (uwierzytelnianie podstawowe).
(Opcjonalnie) Dodaj komentarz.
Kliknij przycisk Dalej.
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ą poprzedzoneAuth type
w nawiasach.- Host: Serwer SQL.
- (Uwierzytelnianie podstawowe) Port
- (Uwierzytelnianie podstawowe) trustServerCertificate: wartość domyślna to
false
. W przypadku set dotrue
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. - (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.
Kliknij pozycję Utwórz połączenie.
(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.
Kliknij przycisk Dalej.
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.
(Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.
Kliknij pozycję Utwórz catalog.
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.
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.
Grant uprawnienia w catalog. Kliknij Grant
- 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.
-
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ć grant
read
uprawnienia do obiektów w catalog. -
Select
Edytor danych z menu rozwijanego do grant
read
imodify
uprawnienia do obiektów w catalog. - Ręcznie select uprawnienia do grant.
-
Select
czytnik danych z menu rozwijanego, aby ustawić grant
- Kliknij pozycję Grant.
Kliknij przycisk Dalej.
Na stronie Metadane określ pary klucz-wartość tagów. Aby uzyskać więcej informacji, zobacz Zastosuj tagi do Unity Catalog zabezpieczanych obiektów.
(Opcjonalnie) Dodaj komentarz.
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
W obszarze roboczym usługi Azure Databricks kliknij ikonę Catalog, aby otworzyć eksploratora Catalog.
W górnej części okienka Catalog kliknij ikonę Ikona Dodaj i selectDodaj catalog z menu.
Alternatywnie na stronie Szybki dostęp kliknij przycisk Catalogs, a następnie kliknij przycisk Utwórz catalog.
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
.