Bagikan melalui


Menyambungkan ke Azure Storage dengan identitas terkelola dari PolyBase

Berlaku untuk: SQL Server 2025 (17.x) dan versi yang lebih baru

Dimulai dengan SQL Server 2025 (17.x), Anda dapat menggunakan identitas terkelola untuk mengakses sumber daya Azure berikut:

  • Azure Blob Storage
  • Azure Data Lake

Prasyarat

  • SQL Server 2025 (17.x)
  • SQL Server diaktifkan oleh Azure Arc
  • Aktifkan opsi konfigurasi server allow server scoped db credentials
  • Berikan akses identitas terkelola ke sumber daya Azure Blob Storage.

Membuat kredensial lingkup database

Tambahkan kredensial khusus database untuk identitas terkelola.

  1. Izinkan kredensial database yang dibatasi oleh server. Jalankan kueri Transact-SQL berikut ini:

    EXECUTE sp_configure 'allow server scoped db credentials', 1;
    GO
    RECONFIGURE;
    
  2. Buat kredensial cakupan database. Contoh ini menggunakan nama managed_id:

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

Membuat sumber data eksternal

Buat sumber data eksternal dengan pengaturan berikut.

  • Awalan lokasi konektor

    • abs
  • Jalur lokasi

    • abs://<container_name>@<storage_account_name>.blob.core.windows.net/ atau
    • abs://<storage_account_name>.blob.core.windows.net/<container_name>
  • Lokasi yang didukung berdasarkan produk / layanan

    • SQL Server 2025 (17.x) diaktifkan oleh Azure Arc
    • SQL Server 2022 (16.x): Ruang nama hierarkis didukung
  • Authentication

    • Tanda tangan akses bersama (SAS), atau
    • Identitas yang dikelola

Menjalankan kueri pada file Parquet di Azure Blob Storage

SQL Server 2025 (17.x) mendukung identitas terkelola melalui Azure Arc. Untuk petunjuknya, lihat Identitas terkelola untuk SQL Server yang diaktifkan oleh Azure Arc.

Contoh berikut mengkueri file Parquet di 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
);

Kesalahan dan solusi

Tabel eksternal tidak dapat diakses (Kesalahan 16562)

Anda mungkin mengalami kesalahan 16562 saat mencoba mengakses Azure Blob Storage atau Azure Data Lake jika Anda kehilangan prasyarat:

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.

Periksa item berikut:

File tidak dapat dibuka (Kesalahan 13822)

Anda mungkin mengalami kesalahan 13822 saat mengakses Azure Blob Storage atau Azure Data Lake jika identitas terkelola tidak memiliki izin pada akun penyimpanan, atau akses jaringan ke penyimpanan diblokir.

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.

Periksa item berikut:

  • Apakah identitas terkelola memiliki izin ke kontainer penyimpanan?
  • Dapatkah identitas terkelola mengakses kontainer penyimpanan di luar SQL Server?
  • Apakah file terkunci secara eksklusif?