Kontrolowanie dostępu do konta magazynowego dla bezserwerowej puli SQL w Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse to magazyn relacyjny w skali przedsiębiorstwa na podstawie bazy danych data lake z architekturą gotową do użycia w przyszłości, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz korzystać z magazynowania danych, zacznij od Fabric Data Warehouse. Istniejące obciążenia dedykowanej puli SQL mogą zostać zaktualizowane do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analizy w czasie rzeczywistym i raportowania.

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 pamięci masowej — użytkownik powinien mieć uprawnienia dostępu do plików pamięci masowej. Administrator magazynu powinien zezwolić głównej jednostce Microsoft Entra 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 do przechowywania

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 wykonującemu zapytanie SQL odczytanie plików. Istnieją trzy metody włączania dostępu do plików:

  • Kontrola dostępu oparta na rolach (RBAC) umożliwia przypisanie roli użytkownikowi Microsoft Entra w dzierżawie, w której znajduje się magazyn. Czytelnik musi być członkiem roli Czytelnika danych obiektów blob, Współautora danych obiektów blob lub Właściciela danych obiektów blob na koncie storage. Użytkownik, który zapisuje dane w Azure Storage, musi być członkiem roli Storage Blob Data Contributor lub Storage Blob Data Owner. 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. ACL można przypisać użytkownikom Microsoft Entra. Jeśli czytelnicy chcą odczytać plik w ścieżce w usłudze Azure Storage, muszą mieć uprawnienia ACL Execute (X) do każdego folderu w ścieżce pliku, a także uprawnienia ACL Read (R) do samego pliku. Dowiedz się więcej o ustawianiu uprawnień ACL w warstwie przechowywania.
  • 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 użytkowników potrzebujących dostępu ograniczonego w czasie, którzy nawet nie muszą być w tym samym dzierżawcy Microsoft Entra. Tokeny SAS można definiować na koncie magazynowym 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. To podejście nie powinno być używane, jeśli masz dane niepubliczne.

Obsługiwane typy autoryzacji przechowywania

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 niepublicowego 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

Microsoft Entra pass-through jest domyślnym działaniem podczas tworzenia obszaru roboczego.

Tożsamość użytkownika, znana również jako "przekazywanie Microsoft Entra", jest typem autoryzacji, w którym tożsamość użytkownika Microsoft Entra, który zalogował się 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 to obsługiwane dla użytkowników typu 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, który wygasa w środku 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 należeć do roli Właściciela danych w obiekcie blob usługi Storage, Współautora danych w obiekcie blob usługi Storage lub Czytelnika danych w obiekcie blob usługi Storage. Alternatywnie można określić szczegółowe reguły ACL w celu uzyskania dostępu do plików i folderów. Nawet jeśli jesteś Właścicielem konta magazynu, nadal musisz dodać się do jednej z ról dotyczących danych obiektu Blob. 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 Azure Storage znajduje się w innej dzierżawie niż bezserwerowa pula SQL usługi Synapse, autoryzacja za pośrednictwem Principal jest zalecaną metodą. Autoryzacja SAS jest również możliwa, podczas gdy Managed Identity nie jest obsługiwane.

Typ autoryzacji Pamięć chroniona zaporą ogniową magazyn niechroniony przez zaporę
SAS Supported Supported
Główna usługa Nie jest obsługiwany Supported

Uwaga

Jeśli Azure Storage jest chroniona przez zaporę Azure Storage, Podstawowy serwis nie będzie obsługiwany.

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 Główna usługa
Tożsamość użytkownika Nie jest obsługiwany Supported Supported
SAS Supported Supported Supported
Główna usługa Supported Supported Supported
Tożsamość zarządzana Supported Supported Supported

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 Supported Niewspierane Supported
Główna usługa Supported Supported Supported
Tożsamość zarządzana Supported Supported Supported
Tożsamość użytkownika Supported Supported Supported

Scenariusze między dzierżawami

W przypadkach, gdy Azure Storage znajduje się w innej dzierżawie niż bezserwerowa pula SQL Azure Synapse Analytics, autoryzacja za pośrednictwem głównego użytkownika 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 Pamięć chroniona przez zaporę sieciową magazyn niechroniony przez zaporę
SAS Supported Supported
Główna usługa Nie jest obsługiwany Supported

Uwaga

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

Przechowywanie chronione zaporą ogniową

Możesz skonfigurować konta magazynowe, 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 Główna usługa
Tożsamość użytkownika Nie jest obsługiwany Supported Supported
SAS Nie jest obsługiwany Nie jest obsługiwany Nie jest obsługiwany
Główna usługa Nie jest obsługiwany Nie jest obsługiwany Nie jest obsługiwany
Tożsamość zarządzana Supported Supported Supported

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

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

  1. Wyszukaj konto magazynowe w portalu Azure.
  2. W menu nawigacji głównej przejdź do pozycji Sieć w obszarze Ustawienia.
  3. W sekcji Instancje zasobów dodaj wyjątek dla obszaru roboczego 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

Aby skonfigurować konto magazynu i dodać wyjątek w obszarze roboczym Azure Synapse, wykonaj następujące czynności.

  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łącz się z Tenantem Azure

    Connect-AzAccount
    
  4. Zdefiniuj zmienne w programie PowerShell:

    • Nazwa grupy zasobów — tę pozycję można znaleźć w portalu Azure w obszarze Przegląd konta magazynowego.
    • Nazwa konta — nazwa konta magazynu chronionego przez zasady zapory.
    • Identyfikator dzierżawy — można go znaleźć w portalu Azure w obszarze Microsoft Entra ID w sekcji Właściwości w obszarze Właściwości 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 sieciowa konta magazynowego została zastosowana w zaporze konta magazynowego. Poniższy skrypt programu PowerShell porównuje zmienną $resourceid z poprzednich kroków z danymi wyjściowymi reguły sieci konta magazynowego.

        $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
            }
        }
    

Credentials

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świadczenie o zakresie bazy danych jest 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. Na 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. Na 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 dla określonego poświadczenia.

Aby udzielić REFERENCES uprawnień na poziomie serwera dla logowania, 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świadczenia na poziomie bazy danych dla użytkownika bazy danych, użyj następującego zapytania T-SQL w kontekście bazy 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 login SQL wywołuje funkcję OPENROWSET bez 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 kont magazynowych opisano w poniższej tabeli:

Zewnętrzne źródło danych Prefiks Ścieżka konta magazynowego
Azure Blob Storage https <storage_account>.blob.core.windows.net
Azure Data Lake Storage Gen1 https <storage_account>.azuredatalakestore.net/webhdfs/v1
Azure Data Lake Storage Gen2 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 Microsoft Entra mogą uzyskiwać dostęp do dowolnego pliku w usłudze Azure Storage, jeśli są członkami ról Właściciel danych Blob Storage, Współautor danych Blob Storage lub Czytelnik danych Blob Storage. Użytkownicy firmy Microsoft Entra nie potrzebują poświadczeń, aby uzyskać dostęp do magazynu.

Użytkownicy uwierzytelniani przy użyciu SQL nie mogą korzystać z uwierzytelniania Microsoft Entra, aby uzyskać dostęp do przestrzeni magazynowej. 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 przypisane do bazy danych

Poświadczenia o zakresie bazy danych są używane, gdy jakikolwiek użytkownik wywołuje funkcję OPENROWSET z DATA_SOURCE lub wybiera dane z tabeli zewnętrznej, które nie zapewniają dostępu do plików publicznych. Poświadczenie ograniczone do bazy danych nie musi być zgodne z nazwą konta przechowywania, jest ono używane w definicji źródła danych określającego lokalizację przechowywania.

Poświadczenia w zakresie bazy danych umożliwiają dostęp do magazynu Azure 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 uwierzytelniani przy użyciu SQL nie mogą korzystać z uwierzytelniania Microsoft Entra, aby uzyskać dostęp do przestrzeni magazynowej. Mogą oni uzyskiwać dostęp do magazynu za pośrednictwem poświadczeń bazy danych przy użyciu tożsamości zarządzanej, klucza SAS, obiektu zabezpieczeń usługi lub jeśli jest publiczny dostęp do magazynu.

Poświadczenia ograniczone do zakresu bazy danych są używane w zewnętrznych źródłach danych w celu określenia metody uwierzytelniania do uzyskiwania dostępu do tej pamięci.

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

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: