Aracılığıyla paylaş


PolyBase'den yönetilen kimlikle Azure Depolama'ya bağlanma

Şunlar için geçerlidir: SQL Server 2025 (17.x) ve sonraki sürümleri

SQL Server 2025 'den (17.x) başlayarak, aşağıdaki Azure kaynaklarına erişmek için yönetilen kimliği kullanabilirsiniz:

  • Azure Blob Saklama Alanı
  • Azure Data Lake

Önkoşullar

Veritabanı kapsamlı kimlik bilgileri oluşturma

Yönetilen kimlik için veritabanı kapsamlı bir kimlik bilgisi ekleyin.

  1. Sunucu kapsamlı veritabanı kimlik bilgilerine izin ver. Aşağıdaki Transact-SQL sorgusunu çalıştırın:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Veritabanı kapsamlı bir kimlik bilgisi oluşturun. Bu örnekte adı managed_idkullanılır:

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

Dış veri kaynağı oluşturma

Aşağıdaki ayarlarla dış veri kaynağını oluşturun.

  • Bağlayıcı konumu ön eki

    • abs
  • Konum yolu

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/ veya
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Ürüne/hizmete göre desteklenen konumlar

    • Azure Arc tarafından etkinleştirilen SQL Server 2025 (17.x)
    • SQL Server 2022 (16.x): Desteklenen hiyerarşik ad alanı
  • Kimlik Doğrulaması

    • Paylaşılan erişim imzası (SAS) veya
    • İdare edilen kimlik

Azure Blob Depolama'da Parquet dosyası sorgulama

SQL Server 2025 (17.x), Azure Arc aracılığıyla yönetilen kimliği destekler. Yönergeler için bkz. Azure Arc tarafından etkinleştirilen SQL Server için yönetilen kimlik.

Aşağıdaki örnek, Azure Blob Depolama'da bir Parquet dosyasını sorgular:

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

Hatalar ve çözümler

Dış tablo erişilebilir değil (Hata 16562)

Önkoşullar eksikse Azure Blob Depolama'ya veya Azure Data Lake'e erişmeye çalışırken hata 16562 ile karşılaşabilirsiniz:

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.

Aşağıdaki öğeleri denetleyin:

Dosya açılamıyor (Hata 13822)

Yönetilen kimlik depolama hesabında izinlere sahip değilse veya depolamaya ağ erişimi engellendiyse Azure Blob Depolama'ya veya Azure Data Lake'e eriştiğinde 13822 hatasıyla karşılaşabilirsiniz.

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.

Aşağıdaki öğeleri denetleyin:

  • Yönetilen kimliğin depolama kapsayıcısı için izinleri var mı?
  • Yönetilen kimlik, SQL Server dışındaki depolama konteynerine erişebilir mi?
  • Dosya özel olarak kilitlendi mi?