Note
Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。
この記事では、接続文字列で資格情報を指定するのではなく、マネージド ID を使用して SQL Managed Instance へのAzure AI 検索 インデクサー接続を設定する方法について説明します。
システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用できます。 マネージド ID は Microsoft Entra のログインであり、SQL Managed Instance のデータにアクセスするには Azure ロールの割り当てが必要です。
この機能の詳細を学習する前に、インデクサーとは何か、およびデータ ソースのインデクサーを設定する方法を理解しておく必要があります。 詳細については、「Indexers in Azure AI 検索 および Index data from Azure SQL Databaseを参照してください。
前提 条件
検索サービスのマネージド ID を作成します。
Microsoft EntraのSQL Managed Instanceにおける管理者ロール
SQL Managed Instanceに対する読み取りアクセス許可を割り当てるには、SQL Managed Instanceを持つAzureグローバル管理者である必要があります。 Microsoft Entra 認証の構成と管理 (SQL Managed Instance) を参照し、Microsoft Entra 管理者 (SQL Managed Instance) をプロビジョニングする手順に従ってください。
SQL Managed Instance でパブリック エンドポイントとネットワーク セキュリティ グループを構成し、Azure AI 検索からの接続を許可します。 マネージド ID を使用する場合の共有プライベート リンク経由の接続は、現在サポートされていません。
データベースを読み取るアクセス許可を割り当てる
SQL Managed Database を読み取る検索サービス システムのマネージド ID アクセス許可を割り当てるには、次の手順に従います。
次のいずれかの方法を使用して、SQL Server Management Studio (SSMS) 経由でSQL Managed Instanceに接続します。
Microsoft Entra アカウントを使用して認証します。
左側のウィンドウで、インデックス作成用のデータ ソースとして使用している SQL データベースを見つけて右クリックします。 [ 新しいクエリ] を選択します。
T-SQL ウィンドウで、次のコマンドをコピーし、検索サービス名の周りに角かっこを含めます。 [ 実行] を選択します。
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];
アクセス許可を割り当てた後で検索サービス システム ID を変更する場合は、ロール メンバーシップを削除し、SQL データベース内のユーザーを削除してから、アクセス許可の割り当てを繰り返す必要があります。 ロールのメンバーシップとユーザーを削除するには、次のコマンドを実行します。
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];
ロールの割り当てを追加する
この手順では、SQL Managed Instanceからデータを読み取るアクセス許可を Azure AI 検索 サービスに付与します。
Azure ポータルで、SQL Managed Instance ページに移動します。
[アクセス制御 (IAM)] を選択します。
[ 追加]>[ロールの割り当ての追加] を選択します。
アクセス制御ページのスクリーンショットを表示しています。 閲覧者ロールを選択します。
アクセスの割り当て先 は Microsoft Entra ユーザー、グループ、またはサービス プリンシパルのままにしておきます。
システム割り当てマネージド ID を使用している場合は、検索サービスを検索して選択します。 ユーザー割り当てマネージド ID を使用している場合は、ユーザー割り当てマネージド ID の名前を検索して選択します。 [保存] を選択します。
システム割り当てマネージド ID を使用するSQL Managed Instanceの例を次に示します。
データ ソースを作成する
データ ソースを作成し、システム割り当てマネージド ID を指定します。
システムによって割り当てられたマネージド ID
REST API、Azure ポータル、および .NET SDK は、システム割り当てマネージド ID をサポートします。
システム割り当てマネージド ID を使用して接続する場合、データ ソース定義の変更は "credentials" プロパティの形式のみです。 初期カタログまたはデータベース名と、アカウント キーまたはパスワードを持たない ResourceId を指定します。
ResourceIdには、SQL Managed Instanceのサブスクリプション ID、SQL Managed instanceのリソース グループ、および SQL データベースの名前を含める必要があります。
Create Data Source REST API とマネージド ID 接続文字列を使用してSQL Managed Instanceのデータにインデックスを付けるデータ ソースを作成する方法の例を次に示します。 マネージド ID 接続文字列形式は、REST API、.NET SDK、および 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"
}
}
インデックスを作成する
インデックスは、検索エクスペリエンスを形成するドキュメント、属性、およびその他のコンストラクト内のフィールドを指定します。
検索可能な フィールドを使用した booktitle REST API 呼び出しを次に示します。
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 }
]
}
インデクサーを作成する
インデクサーは、データ ソースをターゲット検索インデックスに接続し、データ更新を自動化するスケジュールを提供します。 インデックスとデータ ソースを作成したら、インデクサーを作成します。
Azure SQL インデクサー定義を使用した Create Indexer REST API 呼び出しを次に示します。 インデクサーは、要求を送信するときに実行されます。
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"
}
トラブルシューティング
インデクサーが、クライアントがサーバーへのアクセスを許可されていないことを示すデータ ソースに接続しようとしたときにエラーが発生した場合は、 一般的なインデクサー エラーを参照してください。
また、ファイアウォールの問題を除外する場合は、制限ありまたは制限なしで接続を試みることもできます。