Udostępnij za pomocą


Nawiązywanie połączenia z usługą Azure Storage przy użyciu tożsamości zarządzanej z programu PolyBase

Dotyczy: SQL Server 2025 (17.x) i nowsze wersje

Począwszy od programu SQL Server 2025 (17.x), możesz użyć tożsamości zarządzanej , aby uzyskać dostęp do następujących zasobów platformy Azure:

  • Azure Blob Storage
  • Azure Data Lake

Wymagania wstępne

Tworzenie poświadczeń o zakresie bazy danych

Dodaj poświadczenie o zakresie bazy danych dla tożsamości zarządzanej.

  1. Zezwalaj na poświadczenia bazy danych o zakresie serwera. Uruchom następujące zapytanie Transact-SQL:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Utwórz poświadczenie o zakresie bazy danych. W tym przykładzie użyto nazwy managed_id:

    CREATE DATABASE SCOPED CREDENTIAL [managed_id]
    WITH IDENTITY = 'Managed Identity';
    

Tworzenie zewnętrznego źródła danych

Utwórz zewnętrzne źródło danych przy użyciu następujących ustawień.

  • Prefiks lokalizacji łącznika

    • abs
  • Ścieżka lokalizacji

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/, lub
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Obsługiwane lokalizacje według produktu/usługi

    • Program SQL Server 2025 (17.x) włączony przez usługę Azure Arc
    • SQL Server 2022 (16.x): obsługiwana hierarchiczna przestrzeń nazw
  • Uwierzytelnianie

    • Sygnatura dostępu współdzielonego (SAS) lub
    • Tożsamość zarządzana

Wykonywanie zapytań względem pliku Parquet w usłudze Azure Blob Storage

Program SQL Server 2025 (17.x) obsługuje tożsamość zarządzaną za pośrednictwem usługi Azure Arc. Aby uzyskać instrukcje, zobacz Tożsamość zarządzana dla programu SQL Server włączonego przez usługę Azure Arc.

Poniższy przykład wykonuje zapytanie dotyczące pliku Parquet w usłudze Azure Blob Storage:

EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE;
GO

CREATE DATABASE SCOPED CREDENTIAL [managed_id]
WITH IDENTITY = 'Managed Identity';

CREATE EXTERNAL DATA SOURCE [my_external_data_source]
WITH (
    LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
    CREDENTIAL = managed_id
);

Błędy i rozwiązania

Tabela zewnętrzna nie jest dostępna (błąd 16562)

Jeśli brakuje wymagań wstępnych, może wystąpić błąd 16562 podczas próby uzyskania dostępu do usługi Azure Blob Storage lub Azure Data Lake:

Msg 16562, Level 16, State 1, Line 79
External table <name> is not accessible because location does not exist or it is used by another process.

Sprawdź następujące elementy:

Nie można otworzyć pliku (błąd 13822)

Jeśli uzyskujesz dostęp do usługi Azure Blob Storage lub Azure Data Lake, może wystąpić błąd 13822, gdy zarządzana tożsamość nie ma uprawnień na koncie usługi magazynującej lub dostęp sieciowy do usługi magazynowania jest zablokowany.

Msg 13822, Level 16, State 1, Line 9
File <file> cannot be opened because it does not exist or it is used by another process.

Sprawdź następujące elementy:

  • Czy tożsamość zarządzana ma uprawnienia do kontenera przechowywania?
  • Czy tożsamość zarządzana może uzyskać dostęp do kontenera magazynu poza programem SQL Server?
  • Czy plik jest zablokowany na wyłączność?