Menyiapkan koneksi pengindeks ke Azure SQL Managed Instance menggunakan identitas terkelola

Nota

Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.

Artikel ini menjelaskan cara menyiapkan koneksi pengindeks Pencarian Azure AI ke SQL Managed Instance menggunakan identitas terkelola alih-alih memberikan kredensial di string koneksi.

Anda dapat menggunakan identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna. Identitas terkelola di Microsoft Entra merupakan login yang memerlukan penetapan peran Azure untuk mengakses data di SQL Managed Instance.

Sebelum mempelajari selengkapnya tentang fitur ini, Anda harus memahami apa itu pengindeks dan cara menyiapkan pengindeks untuk sumber data Anda. Untuk informasi selengkapnya, lihat Indexers di Pencarian Azure AI dan data Index dari Azure SQL Database.

Prasyarat

Menetapkan izin untuk membaca database

Ikuti langkah-langkah ini untuk menetapkan izin identitas terkelola sistem layanan pencarian untuk membaca database Terkelola SQL.

  1. Sambungkan ke SQL Managed Instance Anda melalui SQL Server Management Studio (SSMS) dengan menggunakan salah satu metode berikut:

  2. Autentikasi dengan menggunakan akun Microsoft Entra Anda.

    Menampilkan cuplikan layar dialog Sambungkan ke Server.

  3. Dari panel kiri, temukan database SQL yang Anda gunakan sebagai sumber data untuk pengindeksan dan klik kanan. Pilih Kueri Baru.

    Memperlihatkan cuplikan layar kueri SQL baru.

  4. Di jendela T-SQL, salin perintah berikut dan sertakan tanda kurung di sekitar nama layanan pencarian Anda. Pilih Jalankan.

    CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER;
    EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
    

    Memperlihatkan cuplikan layar cara menjalankan kueri SQL.

Jika nanti Anda mengubah identitas sistem layanan pencarian setelah menetapkan izin, Anda harus menghapus keanggotaan peran dan menghapus pengguna di database SQL, lalu mengulangi penetapan izin. Untuk menghapus keanggotaan peran dan pengguna, jalankan perintah berikut:

sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];

DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];

Menambahkan penetapan peran

Dalam langkah ini, Anda memberikan izin layanan Pencarian Azure AI Anda untuk membaca data dari SQL Managed Instance Anda.

  1. Di portal Azure, buka halaman SQL Managed Instance Anda.

  2. Pilih Kontrol akses (IAM).

  3. Pilih Tambahkan>penetapan peran.

    Tambah cuplikan layar halaman Access Control.

  4. Pilih peran Pembaca .

  5. Biarkan penetapan akses ke sebagai pengguna, grup, atau prinsipal layanan Microsoft Entra.

  6. Jika Anda menggunakan identitas terkelola yang ditetapkan sistem, cari layanan pencarian Anda dan pilih identitas tersebut. Jika Anda menggunakan identitas terkelola yang ditetapkan pengguna, cari nama identitas terkelola yang ditetapkan pengguna dan pilih identitas tersebut. Pilih Simpan.

    Berikut adalah contoh untuk SQL Managed Instance menggunakan identitas terkelola yang ditetapkan sistem:

    Menampilkan cuplikan layar penetapan peran anggota.

Membuat sumber data

Buat sumber data dan berikan identitas terkelola yang ditetapkan sistem.

Identitas yang terkelola yang diberikan oleh sistem

REST API, portal Azure, dan .NET SDK mendukung identitas terkelola yang ditetapkan sistem.

Saat Anda tersambung dengan menggunakan identitas terkelola yang ditetapkan sistem, satu-satunya perubahan pada definisi sumber data adalah format properti "kredensial". Anda menyediakan Katalog Awal atau Nama database dan ResourceId yang tidak memiliki kunci akun atau kata sandi. ResourceId harus menyertakan ID langganan SQL Managed Instance, grup sumber daya SQL Managed instance, dan nama database SQL.

Berikut adalah contoh cara membuat sumber data untuk mengindeks data dari SQL Managed Instance menggunakan Buat Sumber Data REST API dan string koneksi identitas terkelola. Format string koneksi untuk identitas terkelola sama untuk REST API, .NET SDK, dan Azure portal.

POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-mi-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.Sql/managedInstances/[SQL Managed Instance name];Connection Timeout=100;"
    },
    "container" : { 
        "name" : "my-table" 
    }
} 

Membuat indeks

Indeks menentukan bidang dalam dokumen, atribut, dan konstruksi lain yang membentuk pengalaman pencarian.

Berikut adalah panggilan Buat INDEKS REST API dengan bidang yang dapat dicari booktitle :

POST https://[service name].search.windows.net/indexes?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "my-target-index",
    "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "booktitle", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
    ]
}

Membuat pengindeks

Pengindeks menyambungkan sumber data dengan indeks pencarian target dan menyediakan jadwal untuk mengotomatiskan refresh data. Setelah Anda membuat indeks dan sumber data, buat pengindeks.

Berikut adalah Buat Pengindeks panggilan REST API dengan definisi pengindeks Azure SQL. Pengindeks berjalan saat Anda mengirimkan permintaan.

POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-mi-indexer",
    "dataSourceName" : "sql-mi-datasource",
    "targetIndexName" : "my-target-index"
}

Pemecahan masalah

Jika Anda mendapatkan kesalahan saat pengindeks mencoba menyambungkan ke sumber data yang mengatakan bahwa klien tidak diizinkan untuk mengakses server, lihat kesalahan pengindeks umum.

Anda juga dapat memastikan bahwa tidak ada masalah firewall dengan mencoba koneksi baik dengan maupun tanpa batasan.

Lihat juga