Kontrolowanie dostępu do konta magazynu dla bezserwerowej puli SQL w usłudze Azure Synapse Analytics

Zapytanie bezserwerowej puli SQL odczytuje pliki bezpośrednio z usługi Azure Storage. Uprawnienia dostępu do plików w usłudze Azure Storage są kontrolowane na dwóch poziomach:

  • Poziom magazynu — użytkownik powinien mieć uprawnienia dostępu do podstawowych plików magazynu. Administrator magazynu powinien zezwolić podmiotowi zabezpieczeń firmy Microsoft na odczyt/zapis plików lub wygenerować klucz sygnatury dostępu współdzielonego (SAS), który będzie używany do uzyskiwania dostępu do magazynu.
  • Poziom usługi SQL — użytkownik powinien mieć uprawnienie do odczytywania danych przy użyciu tabeli zewnętrznej lub wykonywania OPENROWSET funkcji. Przeczytaj więcej na temat wymaganych uprawnień w tej sekcji.

W tym artykule opisano typy poświadczeń, których można użyć, oraz sposób, w jaki wyszukiwanie poświadczeń jest wprowadzane dla użytkowników SQL i Microsoft Entra.

Uprawnienia magazynu

Bezserwerowa pula SQL w obszarze roboczym usługi Synapse Analytics może odczytywać zawartość plików przechowywanych w usłudze Azure Data Lake Storage. Należy skonfigurować uprawnienia do magazynu, aby umożliwić użytkownikowi, który wykonuje zapytanie SQL w celu odczytania plików. Istnieją trzy metody włączania dostępu do plików:

  • Kontrola dostępu oparta na rolach (RBAC) umożliwia przypisanie roli do niektórych użytkowników firmy Microsoft Entra w dzierżawie, w której znajduje się magazyn. Czytelnik musi być członkiem roli Czytelnik danych obiektu blob usługi Storage, Współautor danych obiektu blob usługi Storage lub Właściciel danych obiektu blob usługi Storage na koncie magazynu. Użytkownik, który zapisuje dane w usłudze Azure Storage, musi być członkiem roli Współautor danych obiektu blob usługi Storage lub Właściciel danych obiektu blob usługi Storage. Rola Właściciel magazynu nie oznacza, że użytkownik jest również właścicielem danych magazynu.
  • Listy kontroli dostępu (ACL) umożliwiają definiowanie precyzyjnych uprawnień do odczytu(R), zapisu(W) i Wykonywania(X) dla plików i katalogów w usłudze Azure Storage. Listę ACL można przypisać do użytkowników usługi Microsoft Entra. Jeśli czytelnicy chcą odczytać plik w ścieżce w usłudze Azure Storage, muszą mieć uprawnienie listy ACL do wykonywania (X) dla każdego folderu w ścieżce pliku oraz uprawnienie listy ACL do odczytu (R) dla wybranego pliku. Dowiedz się więcej na temat ustawiania uprawnień listy ACL w warstwie magazynu.
  • Sygnatura dostępu współdzielonego umożliwia czytelnikowi dostęp do plików w usłudze Azure Data Lake Storage przy użyciu tokenu ograniczonego czasowo. Czytelnik nie musi nawet być uwierzytelniany jako użytkownik Firmy Microsoft Entra. Token SAS zawiera uprawnienia przyznane czytelnikowi oraz okres ważności tokenu. Token SAS jest dobrym wyborem dla ograniczonego czasu dostępu do każdego użytkownika, który nawet nie musi znajdować się w tej samej dzierżawie firmy Microsoft Entra. Tokeny SAS można definiować na koncie magazynu lub w określonych katalogach. Dowiedz się więcej o udzielaniu ograniczonego dostępu do zasobów w usłudze Azure Storage za pomocą sygnatur dostępu współdzielonego.

Alternatywnym rozwiązaniem jest publiczne udostępnienie plików przez zezwolenie na dostęp anonimowy. NIE NALEŻY stosować tego podejścia w przypadku danych niepublicznych.

Obsługiwane typy autoryzacji magazynu

Użytkownik, który zalogował się do bezserwerowej puli SQL, musi być autoryzowany do uzyskiwania dostępu do plików i wykonywania zapytań względem plików w usłudze Azure Storage, jeśli pliki nie są publicznie dostępne. Do uzyskiwania dostępu do magazynu niepublikowego można użyć czterech typów autoryzacji: tożsamości użytkownika, sygnatury dostępu współdzielonego, jednostki usługi i tożsamości zarządzanej.

Uwaga

Przekazywanie w usłudze Microsoft Entra jest zachowaniem domyślnym podczas tworzenia obszaru roboczego.

Tożsamość użytkownika, znana również jako "Przekazywanie firmy Microsoft Entra", to typ autoryzacji, w którym tożsamość użytkownika Microsoft Entra zalogowanego do bezserwerowej puli SQL jest używana do autoryzacji dostępu do danych. Przed uzyskaniem dostępu do danych administrator usługi Azure Storage musi udzielić uprawnień użytkownikowi Firmy Microsoft Entra. Jak wskazano w tabeli Obsługiwane typy autoryzacji dla użytkowników bazy danych, nie jest obsługiwane dla typu użytkownika SQL.

Ważne

Token uwierzytelniania Entra firmy Microsoft może być buforowany przez aplikacje klienckie. Na przykład usługa Power BI buforuje tokeny firmy Microsoft Entra i ponownie używa tego samego tokenu przez godzinę. Długotrwałe zapytania mogą zakończyć się niepowodzeniem, jeśli token wygaśnie w trakcie wykonywania zapytania. Jeśli występują błędy zapytań spowodowane przez token dostępu firmy Microsoft Entra wygasający w trakcie zapytania, rozważ przełączenie się na jednostkę usługi, tożsamość zarządzaną lub sygnaturę dostępu współdzielonego.

Aby uzyskać dostęp do danych, musisz być członkiem roli Właściciel danych obiektu blob usługi Storage, Współautor danych obiektu blob usługi Storage lub Czytelnik danych obiektu blob usługi Storage. Alternatywnie można określić szczegółowe reguły listy ACL w celu uzyskiwania dostępu do plików i folderów. Nawet jeśli jesteś właścicielem konta magazynu, nadal musisz dodać siebie do jednej z ról danych obiektu blob usługi Storage. Aby dowiedzieć się więcej na temat kontroli dostępu w usłudze Azure Data Lake Store Gen2, zapoznaj się z artykułem Kontrola dostępu w usłudze Azure Data Lake Storage Gen2 .

Scenariusze między dzierżawami

W przypadkach, gdy usługa Azure Storage znajduje się w innej dzierżawie niż bezserwerowa pula SQL usługi Synapse, autoryzacja za pośrednictwem jednostki usługi jest zalecaną metodą. Autoryzacja sygnatury dostępu współdzielonego jest również możliwa, chociaż tożsamość zarządzana nie jest obsługiwana.

Typ autoryzacji Magazyn chroniony przez zaporę magazyn chroniony przez zaporę
SAS Obsługiwane Obsługiwane
Jednostka usługi Nieobsługiwane Obsługiwane

Uwaga

Jeśli usługa Azure Storage jest chroniona przez zaporę usługi Azure Storage, jednostka usługi nie będzie obsługiwana.

Obsługiwane typy autoryzacji dla użytkowników baz danych

Poniższa tabela zawiera dostępne typy autoryzacji usługi Azure Storage dla różnych metod logowania do bezserwerowego punktu końcowego SQL usługi Azure Synapse Analytics:

Typ autoryzacji Użytkownik SQL Użytkownik firmy Microsoft Entra Jednostka usługi
Tożsamość użytkownika Nieobsługiwane Obsługiwane Obsługiwane
SAS Obsługiwane Obsługiwane Obsługiwane
Jednostka usługi Obsługiwane Obsługiwane Obsługiwane
Tożsamość zarządzana Obsługiwane Obsługiwane Obsługiwane

Obsługiwane magazyny i typy autoryzacji

Można użyć następujących kombinacji typów autoryzacji i typów usługi Azure Storage:

Typ autoryzacji Blob Storage ADLS Gen1 ADLS Gen2
SAS Obsługiwane Nieobsługiwane Obsługiwane
Jednostka usługi Obsługiwane Obsługiwane Obsługiwane
Tożsamość zarządzana Obsługiwane Obsługiwane Obsługiwane
Tożsamość użytkownika Obsługiwane Obsługiwane Obsługiwane

Scenariusze między dzierżawami

W przypadkach, gdy usługa Azure Storage znajduje się w innej dzierżawie niż bezserwerowa pula SQL usługi Azure Synapse Analytics, autoryzacja za pośrednictwem jednostki usługi jest zalecaną metodą. Autoryzacja sygnatury dostępu współdzielonego jest również możliwa. Tożsamość usługi zarządzanej nie jest obsługiwana.

Typ autoryzacji Magazyn chroniony przez zaporę magazyn chroniony przez zaporę
SAS Obsługiwane Obsługiwane
Jednostka usługi Nieobsługiwane Obsługiwane

Uwaga

Jeśli usługa Azure Storage jest chroniona przez zaporę usługi Azure Storage i znajduje się w innej dzierżawie, jednostka usługi nie będzie obsługiwana. Zamiast tego należy użyć sygnatury dostępu współdzielonego (SAS).

Magazyn chroniony przez zaporę

Możesz skonfigurować konta magazynu, aby zezwolić na dostęp do określonej bezserwerowej puli SQL, tworząc regułę wystąpienia zasobu. W przypadku uzyskiwania dostępu do magazynu chronionego za pomocą zapory użyj tożsamości użytkownika lub tożsamości zarządzanej.

Uwaga

Funkcja zapory w usłudze Azure Storage jest dostępna w publicznej wersji zapoznawczej i jest dostępna we wszystkich regionach chmury publicznej.

Poniższa tabela zawiera dostępne typy autoryzacji usługi Azure Storage chronione przez zaporę dla różnych metod logowania do bezserwerowego punktu końcowego SQL usługi Azure Synapse Analytics:

Typ autoryzacji Użytkownik SQL Użytkownik firmy Microsoft Entra Jednostka usługi
Tożsamość użytkownika Nieobsługiwane Obsługiwane Obsługiwane
SAS Nieobsługiwane Nieobsługiwane Nieobsługiwane
Jednostka usługi Nieobsługiwane Nieobsługiwane Nieobsługiwane
Tożsamość zarządzana Obsługiwane Obsługiwane Obsługiwane

Aby uzyskać dostęp do magazynu chronionego za pomocą zapory za pośrednictwem tożsamości użytkownika, możesz użyć witryny Azure Portal lub modułu Az.Storage Programu PowerShell.

Konfiguracja zapory usługi Azure Storage za pośrednictwem witryny Azure Portal

  1. Wyszukaj konto magazynu w witrynie Azure Portal.
  2. W menu nawigacji głównej przejdź do pozycji Sieć w obszarze Ustawienia.
  3. W sekcji Wystąpienia zasobów dodaj wyjątek dla obszaru roboczego usługi Azure Synapse.
  4. Wybierz Microsoft.Synapse/workspaces jako typ zasobu.
  5. Wybierz nazwę obszaru roboczego jako nazwę wystąpienia.
  6. Wybierz pozycję Zapisz.

Konfiguracja zapory usługi Azure Storage za pośrednictwem programu PowerShell

Wykonaj następujące kroki, aby skonfigurować konto magazynu i dodać wyjątek dla obszaru roboczego usługi Azure Synapse.

  1. Otwórz program PowerShell lub zainstaluj program PowerShell.

  2. Zainstaluj najnowsze wersje modułu Az.Storage i modułu Az.Synapse, na przykład w następującym skrypcie:

    Install-Module -Name Az.Storage -RequiredVersion 3.4.0
    Install-Module -Name Az.Synapse -RequiredVersion 0.7.0
    

    Ważne

    Upewnij się, że używasz co najmniej wersji 3.4.0. Aby sprawdzić wersję modułu Az.Storage, uruchom następujące polecenie:

    Get-Module -ListAvailable -Name Az.Storage | Select Version
    
  3. Połączenie do dzierżawy platformy Azure:

    Connect-AzAccount
    
  4. Zdefiniuj zmienne w programie PowerShell:

    • Nazwa grupy zasobów — tę pozycję można znaleźć w witrynie Azure Portal w obszarze Przegląd konta magazynu.
    • Nazwa konta — nazwa konta magazynu chronionego przez reguły zapory.
    • Identyfikator dzierżawy — tę pozycję można znaleźć w witrynie Azure Portal w obszarze Identyfikator entra firmy Microsoft w obszarze Właściwości we właściwościach dzierżawy.
    • Nazwa obszaru roboczego — nazwa obszaru roboczego usługi Azure Synapse.
        $resourceGroupName = "<resource group name>"
        $accountName = "<storage account name>"
        $tenantId = "<tenant id>"
        $workspaceName = "<Azure Synapse workspace name>"
    
        $workspace = Get-AzSynapseWorkspace -Name $workspaceName
        $resourceId = $workspace.Id
        $index = $resourceId.IndexOf("/resourceGroups/", 0)
        # Replace G with g - /resourceGroups/ to /resourcegroups/
        $resourceId = $resourceId.Substring(0,$index) + "/resourcegroups/" ` 
            + $resourceId.Substring($index + "/resourceGroups/".Length)
    
        $resourceId
    

    Ważne

    Wartość zwrócona $resourceid przez skrypt programu PowerShell powinna być zgodna z tym szablonem: /subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Synapse/workspaces/{name-of-workspace} Ważne jest, aby zapisywać grupy zasobów w małych literach .

  5. Dodaj regułę sieciową konta usługi Azure Storage:

        $parameters = @{
            ResourceGroupName = $resourceGroupName
            Name = $accountName
            TenantId = $tenantId 
            ResourceId = $resourceId
        }
    
        Add-AzStorageAccountNetworkRule @parameters
    
  6. Sprawdź, czy reguła sieci konta magazynu została zastosowana w zaporze konta magazynu. Poniższy skrypt programu PowerShell porównuje zmienną $resourceid z poprzednich kroków do danych wyjściowych reguły sieciowej konta magazynu.

        $parameters = @{
            ResourceGroupName = $resourceGroupName
            Name = $accountName
        }
    
        $rule = Get-AzStorageAccountNetworkRuleSet @parameters
        $rule.ResourceAccessRules | ForEach-Object { 
            if ($_.ResourceId -cmatch "\/subscriptions\/(\w\-*)+\/resourcegroups\/(.)+") { 
                Write-Host "Storage account network rule is successfully configured." -ForegroundColor Green
                $rule.ResourceAccessRules
            } else {
                Write-Host "Storage account network rule is not configured correctly. Remove this rule and follow the steps in detail." -ForegroundColor Red
                $rule.ResourceAccessRules
            }
        }
    

Poświadczenia

Aby wysłać zapytanie do pliku znajdującego się w usłudze Azure Storage, punkt końcowy bezserwerowej puli SQL wymaga poświadczenia zawierającego informacje dotyczące uwierzytelniania. Używane są dwa typy poświadczeń:

  • Poświadczenia na poziomie serwera są używane do wykonywania zapytań ad hoc przy użyciu OPENROWSET funkcji. Nazwa poświadczeń musi być zgodna z adresem URL magazynu.
  • Poświadczenia o zakresie bazy danych są używane dla tabel zewnętrznych. Odwołania do tabeli DATA SOURCE zewnętrznej z poświadczeniami, które powinny być używane do uzyskiwania dostępu do magazynu.

Udzielanie uprawnień do zarządzania poświadczeniami

Aby udzielić możliwości zarządzania poświadczeniami:

  • Aby zezwolić użytkownikowi na tworzenie lub usuwanie poświadczeń na poziomie serwera, administrator musi udzielić ALTER ANY CREDENTIAL uprawnień do logowania w bazie danych master. Przykład:

    GRANT ALTER ANY CREDENTIAL TO [login_name];
    
  • Aby zezwolić użytkownikowi na tworzenie lub usuwanie poświadczeń o określonym zakresie bazy danych, administrator musi przyznać CONTROL użytkownikowi bazy danych uprawnienia do bazy danych w bazie danych użytkownika. Przykład:

    GRANT CONTROL ON DATABASE::[database_name] TO [user_name];
    

Udzielanie uprawnień do używania poświadczeń

Użytkownicy bazy danych, którzy uzyskują dostęp do magazynu zewnętrznego, muszą mieć uprawnienia do używania poświadczeń. Aby użyć poświadczeń, użytkownik musi mieć REFERENCES uprawnienia do określonego poświadczenia.

Aby udzielić REFERENCES uprawnień na potrzeby logowania na poziomie serwera, użyj następującego zapytania T-SQL w bazie danych master:

GRANT REFERENCES ON CREDENTIAL::[server-level_credential] TO [login_name];

Aby udzielić REFERENCES uprawnienia do poświadczeń o zakresie bazy danych dla użytkownika bazy danych, użyj następującego zapytania T-SQL w bazie danych użytkownika:

GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[database-scoped_credential] TO [user_name];

Poświadczenia na poziomie serwera

Poświadczenia na poziomie serwera są używane, gdy identyfikator logowania SQL wywołuje OPENROWSET funkcję bez elementu DATA_SOURCE do odczytu plików na koncie magazynu.

Nazwa poświadczeń na poziomie serwera musi być zgodna z podstawowym adresem URL usługi Azure Storage, po którym opcjonalnie następuje nazwa kontenera. Poświadczenie jest dodawane przez uruchomienie polecenia CREATE CREDENTIAL. Musisz podać CREDENTIAL NAME argument .

Uwaga

Argument FOR CRYPTOGRAPHIC PROVIDER nie jest obsługiwany.

Nazwa POŚWIADCZENIA na poziomie serwera musi być zgodna z następującym formatem: <prefix>://<storage_account_path>[/<container_name>]. Ścieżki konta magazynu opisano w poniższej tabeli:

Zewnętrzne źródło danych Prefiks Ścieżka konta magazynu
Azure Blob Storage https <storage_account>.blob.core.windows.net
Usługa Azure Data Lake Storage 1. generacji https <storage_account>.azuredatalakestore.net/webhdfs/v1
Usługa Azure Data Lake Storage 2. generacji https <storage_account>.dfs.core.windows.net

Poświadczenia na poziomie serwera mogą następnie uzyskiwać dostęp do usługi Azure Storage przy użyciu następujących typów uwierzytelniania:

Użytkownicy firmy Microsoft Entra mogą uzyskać dostęp do dowolnego pliku w usłudze Azure Storage, jeśli są członkami roli Właściciel danych obiektu blob usługi Storage, Współautor danych obiektu blob usługi Storage lub Czytelnik danych obiektu blob usługi Storage. Użytkownicy firmy Microsoft Entra nie potrzebują poświadczeń, aby uzyskać dostęp do magazynu.

Użytkownicy uwierzytelnieni w usłudze SQL nie mogą uzyskiwać dostępu do magazynu przy użyciu uwierzytelniania firmy Microsoft Entra. Mogą oni uzyskiwać dostęp do magazynu za pośrednictwem poświadczeń bazy danych przy użyciu tożsamości zarządzanej, klucza sygnatury dostępu współdzielonego, jednostki usługi lub publicznego dostępu do magazynu.

Poświadczenia o zakresie bazy danych

Poświadczenia o zakresie bazy danych są używane, gdy wszystkie główne wywołania OPENROWSET funkcji z DATA_SOURCE lub wybierają dane z tabeli zewnętrznej, które nie uzyskują dostępu do plików publicznych. Poświadczenie o zakresie bazy danych nie musi być zgodne z nazwą konta magazynu, do którego odwołuje się źródło danych, które definiuje lokalizację magazynu.

Poświadczenia o zakresie bazy danych umożliwiają dostęp do usługi Azure Storage przy użyciu następujących typów uwierzytelniania:

Użytkownicy firmy Microsoft Entra mogą uzyskać dostęp do dowolnego pliku w usłudze Azure Storage, jeśli są członkami ról właściciela danych obiektu blob usługi Storage, współautora danych obiektu blob usługi Storage lub czytelnika danych obiektu blob usługi Storage. Użytkownicy firmy Microsoft Entra nie potrzebują poświadczeń, aby uzyskać dostęp do magazynu.

CREATE EXTERNAL DATA SOURCE mysample
WITH (    LOCATION   = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>'
)

Użytkownicy uwierzytelnieni w usłudze SQL nie mogą uzyskiwać dostępu do magazynu przy użyciu uwierzytelniania firmy Microsoft Entra. Mogą oni uzyskiwać dostęp do magazynu za pośrednictwem poświadczeń bazy danych przy użyciu tożsamości zarządzanej, klucza sygnatury dostępu współdzielonego, jednostki usługi lub publicznego dostępu do magazynu.

Poświadczenia o zakresie bazy danych są używane w zewnętrznych źródłach danych w celu określenia, która metoda uwierzytelniania będzie używana do uzyskiwania dostępu do tego magazynu:

CREATE EXTERNAL DATA SOURCE mysample
WITH (    LOCATION   = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>',
          CREDENTIAL = <name of database scoped credential> 
)

Przykłady

Uzyskiwanie dostępu do publicznie dostępnego źródła danych

Użyj poniższego skryptu, aby utworzyć tabelę, która uzyskuje dostęp do publicznie dostępnego źródła danych.

CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat]
       WITH ( FORMAT_TYPE = PARQUET)
GO
CREATE EXTERNAL DATA SOURCE publicData
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<public_container>/<path>' )
GO

CREATE EXTERNAL TABLE dbo.userPublicData ( [id] int, [first_name] varchar(8000), [last_name] varchar(8000) )
WITH ( LOCATION = 'parquet/user-data/*.parquet',
       DATA_SOURCE = [publicData],
       FILE_FORMAT = [SynapseParquetFormat] )

Użytkownik bazy danych może odczytywać zawartość plików ze źródła danych przy użyciu tabeli zewnętrznej lub funkcji OPENROWSET , która odwołuje się do źródła danych:

SELECT TOP 10 * FROM dbo.userPublicData;
GO
SELECT TOP 10 * FROM OPENROWSET(BULK 'parquet/user-data/*.parquet',
                                DATA_SOURCE = 'mysample',
                                FORMAT='PARQUET') as rows;
GO

Uzyskiwanie dostępu do źródła danych przy użyciu poświadczeń

Zmodyfikuj poniższy skrypt, aby utworzyć tabelę zewnętrzną, która uzyskuje dostęp do usługi Azure Storage przy użyciu tokenu SAS, tożsamości microsoft Entra użytkownika lub tożsamości zarządzanej obszaru roboczego.

-- Create master key in databases with some password (one-off per database)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>'
GO

-- Create databases scoped credential that use Managed Identity, SAS token or service principal. User needs to create only database-scoped credentials that should be used to access data source:

CREATE DATABASE SCOPED CREDENTIAL WorkspaceIdentity
WITH IDENTITY = 'Managed Identity'
GO
CREATE DATABASE SCOPED CREDENTIAL SasCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sv=2019-10-1********ZVsTOL0ltEGhf54N8KhDCRfLRI%3D'
GO
CREATE DATABASE SCOPED CREDENTIAL SPNCredential WITH
IDENTITY = '**44e*****8f6-ag44-1890-34u4-22r23r771098@https://login.microsoftonline.com/**do99dd-87f3-33da-33gf-3d3rh133ee33/oauth2/token' 
, SECRET = '.7OaaU_454azar9WWzLL.Ea9ePPZWzQee~'
GO
-- Create data source that one of the credentials above, external file format, and external tables that reference this data source and file format:

CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat] WITH ( FORMAT_TYPE = PARQUET)
GO

CREATE EXTERNAL DATA SOURCE mysample
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>'
-- Uncomment one of these options depending on authentication method that you want to use to access data source:
--,CREDENTIAL = WorkspaceIdentity 
--,CREDENTIAL = SasCredential 
--,CREDENTIAL = SPNCredential
)

CREATE EXTERNAL TABLE dbo.userData ( [id] int, [first_name] varchar(8000), [last_name] varchar(8000) )
WITH ( LOCATION = 'parquet/user-data/*.parquet',
       DATA_SOURCE = [mysample],
       FILE_FORMAT = [SynapseParquetFormat] );

Użytkownik bazy danych może odczytywać zawartość plików ze źródła danych przy użyciu tabeli zewnętrznej lub funkcji OPENROWSET , która odwołuje się do źródła danych:

SELECT TOP 10 * FROM dbo.userdata;
GO
SELECT TOP 10 * FROM OPENROWSET(BULK 'parquet/user-data/*.parquet', DATA_SOURCE = 'mysample', FORMAT='PARQUET') as rows;
GO

Następne kroki

Te artykuły ułatwiają poznanie sposobu wykonywania zapytań dotyczących różnych typów folderów, typów plików oraz tworzenia i używania widoków: