Configurare una connessione dell'indicizzatore per Istanza gestita di SQL di Azure usando un'identità gestita

Note

Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.

Questo articolo descrive come configurare una connessione dell'indicizzatore Azure AI Search a Istanza gestita di SQL usando un'identità gestita anziché fornire le credenziali nel stringa di connessione.

È possibile usare un'identità gestita assegnata dal sistema o un'identità gestita assegnata dall'utente. Le identità gestite sono logins di Microsoft Entra e richiedono assegnazioni di ruolo di Azure per accedere ai dati in Istanza gestita di SQL.

Prima di ottenere altre informazioni su questa funzionalità, è necessario comprendere che cos'è un indicizzatore e come configurare un indicizzatore per l'origine dati. Per ulteriori informazioni, vedere Indicizzatori nel motore di ricerca Azure AI e Indicizzare dati dal database Azure SQL.

Prerequisiti

Assegnare le autorizzazioni per leggere il database

Seguire questa procedura per assegnare l'autorizzazione dell'identità gestita del sistema del servizio di ricerca per leggere il database gestito di SQL.

  1. Connettersi al Istanza gestita di SQL tramite SQL Server Management Studio (SSMS) usando uno dei metodi seguenti:

  2. Eseguire l'autenticazione usando l'account Microsoft Entra.

    Screenshot della finestra di dialogo Connetti al server.

  3. Nel riquadro sinistro individuare il database SQL usato come origine dati per l'indicizzazione e fare clic con il pulsante destro del mouse. Selezionare Nuova query.

    Visualizzazione dello screenshot della nuova query SQL.

  4. Nella finestra T-SQL copiare i comandi seguenti e includere le parentesi quadre intorno al nome del servizio di ricerca. Selezionare Esegui.

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

    Screenshot che mostra come eseguire una query SQL.

Se in seguito si modifica l'identità del sistema del servizio di ricerca dopo l'assegnazione delle autorizzazioni, è necessario rimuovere l'appartenenza al ruolo e rimuovere l'utente nel database SQL, quindi ripetere l'assegnazione delle autorizzazioni. Per rimuovere l'appartenenza al ruolo e l'utente, eseguire i comandi seguenti:

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

Aggiungere un'assegnazione di ruolo

In questo passaggio si concede al servizio Azure AI Search l'autorizzazione per leggere i dati dal Istanza gestita di SQL.

  1. Nel portale di Azure passare alla pagina Istanza gestita di SQL.

  2. Selezionare Controllo di accesso (IAM).

  3. Selezionare Aggiungi assegnazione>di ruolo.

    Mostrando uno screenshot della pagina di controllo accessi.

  4. Selezionare il ruolo Lettore .

  5. Lasciare Assegna accesso a impostato su Utente, gruppo o entità servizio di Microsoft Entra.

  6. Se si usa un'identità gestita assegnata dal sistema, cercare il servizio di ricerca e selezionarlo. Se si usa un'identità gestita assegnata dall'utente, cercare il nome dell'identità gestita assegnata dall'utente e selezionarla. Selezionare Salva.

    Ecco un esempio per Istanza gestita di SQL usando un'identità gestita assegnata dal sistema:

    Screenshot dell'assegnazione del ruolo di membro.

Creare l'origine dati

Creare l'origine dati e fornire un'identità gestita assegnata dal sistema.

Identità gestita assegnata dal sistema

L'API REST, il portale di Azure e l'SDK .NET SDK supportano l'identità gestita assegnata dal sistema.

Quando ci si connette usando un'identità gestita assegnata dal sistema, l'unica modifica alla definizione dell'origine dati è il formato della proprietà "credentials". Si fornisce un nome di catalogo o database iniziale e un oggetto ResourceId senza chiave o password dell'account. Il ResourceId deve includere l'ID sottoscrizione di Istanza gestita di SQL, il gruppo di risorse di SQL Managed instance e il nome del database SQL.

Di seguito viene fornito un esempio di come creare una fonte di dati per indicizzare i dati da una Istanza gestita di SQL utilizzando l'API REST Create Data Source e una stringa di connessione con identità gestita. Il formato della stringa di connessione dell'identità gestita è lo stesso per l'API REST, .NET SDK e il portale di Azure.

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

Creare l'indice

L'indice specifica i campi in un documento, attributi e altri costrutti che modellano l'esperienza di ricerca.

Ecco una chiamata all'API REST Create Index con un campo ricercabile 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 }
    ]
}

Creare l'indicizzatore

Un indicizzatore connette un'origine dati con un indice di ricerca di destinazione e fornisce una pianificazione per automatizzare l'aggiornamento dei dati. Dopo aver creato l'indice e l'origine dati, creare l'indicizzatore.

Ecco una chiamata API REST Crea indicizzatore con una definizione dell'indicizzatore Azure SQL. L'indicizzatore viene eseguito quando si invia la richiesta.

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

Risoluzione dei problemi

Se viene visualizzato un errore quando l'indicizzatore tenta di connettersi all'origine dati che indica che il client non è autorizzato ad accedere al server, vedere gli errori comuni dell'indicizzatore.

È anche possibile escludere eventuali problemi del firewall provando la connessione con e senza restrizioni.

Vedere anche