Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie eine Indexerverbindung zur Azure SQL-Datenbank mit einer verwalteten Identität einrichten, anstatt Anmeldeinformationen in der Verbindungszeichenfolge bereitzustellen.
Sie können eine vom System zugewiesene verwaltete Identität oder eine vom Benutzer zugewiesene verwaltete Identität verwenden. Verwaltete Identitäten sind Microsoft Entra Anmeldungen und erfordern Azure Rollenzuweisungen für den Zugriff auf Daten in Azure SQL.
Voraussetzungen
Erstellen Sie eine verwaltete Identität für Ihren Suchdienst.
Assignieren Sie eine Azure Administratorrolle in SQL. Die für die Indexerverbindung verwendete Identität benötigt Leseberechtigungen. Um Leseberechtigungen für eine Datenbank zu erteilen, müssen Sie ein Microsoft Entra-Administrator mit einem Server in einer SQL-Datenbank oder einem SQL Managed Instance sein.
Sie sollten mit Indexerkonzepten und -konfigurationen vertraut sein.
1 – Zuweisen von Berechtigungen zum Lesen der Datenbank
Führen Sie die folgenden Schritte aus, um den Suchdienst oder die vom Benutzer zugewiesenen verwalteten Identitätsberechtigungen zum Lesen der Datenbank zuzuweisen.
Stellen Sie eine Verbindung mit Visual Studio her.
Authentifizieren Sie sich mit Ihrem Microsoft Entra Konto.
Führen Sie die folgenden Befehle aus:
Geben Sie die Klammern um den Namen Ihres Suchdiensts oder der benutzerseitig zugewiesenen verwalteten Identität mit ein.
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];
Wenn Sie die Suchdienstidentität oder die vom Benutzer zugewiesene Identität nach dem Zuweisen von Berechtigungen später ändern, müssen Sie die Rollenmitgliedschaft entfernen und den Benutzer in der SQL-Datenbank entfernen und dann die Berechtigungszuweisung wiederholen. Das Entfernen der Rollenmitgliedschaft und des Benutzers kann durch Ausführen der folgenden Befehle erreicht werden:
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];
2 – Hinzufügen einer Rollenzuweisung
In diesem Abschnitt erteilen Sie Ihrem Azure KI-Suche Dienst die Berechtigung zum Lesen von Daten aus Ihrem SQL Server. Ausführliche Schritte finden Sie unter Assign Azure Rollen mithilfe des Azure Portals.
Navigieren Sie im Azure-Portal zu Ihrer Azure SQL Server Seite.
Wählen Sie access control (IAM) aus.
Wählen Sie "Rollenzuweisung hinzufügen" > aus.
Wählen Sie auf der Registerkarte " Rolle " die entsprechende Leserolle aus.
Wählen Sie auf der Registerkarte " Mitglieder " die Option "Verwaltete Identität" und dann " Mitglieder auswählen" aus.
Wählen Sie Ihr Azure-Abonnement aus.
Wenn Sie eine vom System zugewiesene verwaltete Identität verwenden, wählen Sie vom System zugewiesene verwaltete Identität aus, suchen Sie nach Ihrem Suchdienst, und wählen Sie sie aus.
Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität verwenden, suchen Sie nach dem Namen der benutzerseitig zugewiesenen verwalteten Identität, und wählen Sie sie aus.
Wählen Sie auf der Registerkarte "Überprüfen+ Zuweisen" die Option "Überprüfen" und "Zuweisen" aus, um die Rolle zuzuweisen.
3 – Erstellen der Datenquelle
Erstellen Sie die Datenquelle, und stellen Sie entweder eine vom System zugewiesene verwaltete Identität oder eine vom Benutzer zugewiesene verwaltete Identität bereit.
Vom System zugewiesene verwaltete Identität
Die REST-API, Azure Portal und die Azure SDKs unterstützen die vom System zugewiesene verwaltete Identität.
Wenn Sie eine Verbindung mit einer vom System zugewiesenen verwalteten Identität herstellen, ist die einzige Änderung an der Datenquellendefinition das Format der Eigenschaft "credentials". Sie stellen einen Ursprünglichen Katalog- oder Datenbanknamen und eine ResourceId bereit, die keinen Kontoschlüssel oder ein Kennwort enthält. Die ResourceId muss die Abonnement-ID von Azure SQL-Datenbank, die Ressourcengruppe der SQL-Datenbank und den Namen der SQL-Datenbank enthalten.
Nachfolgend finden Sie ein Beispiel, wie eine Datenquelle zum Indizieren von Daten aus einem Speicherkonto mithilfe der Create Data Source API und einer Verbindungszeichenfolge einer verwalteten Identität erstellt wird. Das Connection-String-Format der verwalteten Identität ist für die REST-API, das .NET SDK und das Azure-Portal identisch.
POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
}
}
Vom Benutzer zugewiesene verwaltete Identität
REST-API Version 2026-04-01 und höher unterstützen Verbindungen basierend auf einer vom Benutzer zugewiesenen verwalteten Identität. Wenn Sie eine Verbindung mit einer vom Benutzer zugewiesenen verwalteten Identität herstellen, gibt es zwei Änderungen an der Datenquellendefinition:
Zunächst besteht das Format der Eigenschaft "credentials" aus einem Initial Catalog oder Database Name und einer ResourceId, die keinen Kontoschlüssel oder kein Kennwort enthält. Die ResourceId muss die Abonnement-ID von Azure SQL-Datenbank, die Ressourcengruppe der SQL-Datenbank und den Namen der SQL-Datenbank enthalten. Dies ist das gleiche Format wie die vom System zugewiesene verwaltete Identität.
Fügen Sie zweitens eine "Identity"-Eigenschaft hinzu, die die Sammlung von vom Benutzer zugewiesenen verwalteten Identitäten enthält. Beim Erstellen der Datenquelle sollte nur eine vom Benutzer zugewiesene verwaltete Identität bereitgestellt werden. Legen Sie sie auf den Typ „userAssignedIdentities“ fest.
Im Folgenden finden Sie ein Beispiel zum Erstellen eines Indexerdatenquellobjekts mithilfe von Datenquellen – Erstellen oder Aktualisieren:
POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
}
}
4 – Erstellen des Indexes
Der Index gibt die Felder in einem Dokument, Attributen und anderen Konstrukten an, die die Suchoberfläche bilden.
Hier sehen Sie einen Create Index REST API-Aufruf mit einem durchsuchbaren booktitle Feld:
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 }
]
}
5 – Erstellen des Indexers
Ein Indexer verbindet eine Datenquelle mit einem Zielsuchindex und stellt einen Zeitplan zum Automatisieren der Datenaktualisierung bereit. Nachdem der Index und die Datenquelle erstellt wurden, können Sie den Indexer erstellen. Wenn der Indexer erfolgreich ist, sind die Verbindungssyntax und Rollenzuweisungen gültig.
Hier ist ein Create Indexer REST-API-Aufruf mit einer Azure SQL Indexerdefinition. Der Indexer wird ausgeführt, wenn Sie die Anforderung übermitteln.
POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-indexer",
"dataSourceName" : "sql-datasource",
"targetIndexName" : "my-target-index"
}
Wenn der Indexer beim Versuch, eine Verbindung mit der Datenquelle herzustellen, eine Fehlermeldung erhält, die besagt, dass der Client keinen Zugriff auf den Server hat, schauen Sie sich allgemeine Indexerfehler an.