Azure SQLと Microsoft SQL Server Microsoft Graph コネクタ

Microsoft SQL Server または Azure SQL Microsoft Graph コネクタを使用すると、organizationは、オンプレミスのSQL Server データベース、またはクラウド内のAzure SQL インスタンスでホストされているデータベースからデータを検出してインデックスを作成できます。 コネクタは、指定されたコンテンツに Microsoft Search にインデックスを付けます。 ソース データを使用してインデックスを最新の状態に保つために、定期的な完全クロールと増分クロールがサポートされます。 これらの SQL コネクタを使用すると、特定のユーザーの検索結果へのアクセスを制限することもできます。

注:

一般的な Graph コネクタのセットアップ手順については、Microsoft Graph コネクタ のセットアップに関する記事を参照してください。

この記事は、Azure SQLまたは Microsoft SQL Server コネクタを構成、実行、監視するユーザーを対象とします。 一般的なセットアップ プロセスを補完し、Azure SQLと Microsoft SQL Server コネクタにのみ適用される手順を示します。 この記事では、両方 のコネクタの制限事項 についても説明します。

使用を開始する前に

Microsoft Graph コネクタ エージェントをインストールする (オンプレミスの Microsoft SQL Server コネクタにのみ必要)

オンプレミスのサード パーティのデータにアクセスするには、コネクタ エージェントをインストールして構成する必要があります。 詳細については、「 Microsoft Graph コネクタ エージェントのインストール 」を参照してください。

注:

Microsoft SQL Server コネクタの構成中にWindows 認証を使用する場合、サインインしようとしているユーザーは、コネクタ エージェントがインストールされているコンピューターに対する対話型ログオン権限を持っている必要があります。 ログオン権限をチェックするには、ログオン ポリシー管理に関するドキュメントを参照してください。

手順 1: Microsoft 365 管理センターにコネクタを追加する

一般的な セットアップ手順に従います。

手順 2: 接続に名前を指定する

一般的な セットアップ手順に従います。

手順 3. 接続設定を構成する

アプリを登録する (Azure SQL コネクタのみ)

Azure SQL コネクタの場合は、Microsoft Search アプリがインデックス作成用のデータにアクセスできるようにするには、Microsoft Entra ID にアプリを登録する必要があります。 アプリの登録の詳細については、アプリの登録方法に関する Microsoft Graph ドキュメント 参照してください。

アプリの登録を完了し、アプリ名、アプリケーション (クライアント) ID、テナント ID を書き留めてから、 新しいクライアント シークレットを生成する必要があります。 クライアント シークレットは 1 回だけ表示されます。 クライアント シークレットを安全に保存 & 注意してください。 Microsoft Search で新しい接続を構成するときに、クライアント ID とクライアント シークレットを使用します。

登録したアプリを Azure SQL Database に追加するには、次の操作を行う必要があります。

  • Azure SQL DB にログインする
  • 新しいクエリ ウィンドウを開く
  • "CREATE USER [アプリ名] FROM EXTERNAL PROVIDER' コマンドを実行して、新しいユーザーを作成します
  • コマンド 'db_datareader'sp_addrolemember、[アプリ名]' または 'ALTER ROLE db_datareader ADD MEMBER [app name]' を実行して、ユーザーをロールに追加します

注:

Microsoft Entra ID に登録されているアプリへのアクセスを取り消すには、登録されているアプリの削除に関する Azure ドキュメントを参照してください。

接続設定

Microsoft SQL Server コネクタをデータ ソースに接続するには、クロールするデータベース サーバーとオンプレミス エージェントを構成する必要があります。 その後、必要な認証方法を使用してデータベースに接続できます。

注:

  • Microsoft SQL Server コネクタが接続できるようにするには、データベースSQL Serverバージョン 2008 以降を実行する必要があります。
  • Azure SQL コネクタでは、Microsoft 365 と同じテナント内のAzure SQL インスタンスからのインジェストのみが許可されます。 テナント間データ フローはサポートされていません。

Azure SQL コネクタの場合は、接続先のサーバー名または IP アドレスのみを指定する必要があります。 Azure SQL コネクタでは、Microsoft Entra ID OpenID Connect (OIDC) 認証のみがサポートされ、データベースに接続できます。

セキュリティを強化するために、Azure SQL サーバーまたはデータベースの IP ファイアウォール規則を構成できます。 IP ファイアウォール規則の設定の詳細については、IP ファイアウォール 規則に関するドキュメントを参照してください。 ファイアウォール設定に次のクライアント IP 範囲を追加します。

Region M365 Enterprise M365 Government
NAM 52.250.92.252/30, 52.224.250.216/30 52.245.230.216/30, 20.141.117.64/30
EUR 20.54.41.208/30, 51.105.159.88/30 該当なし
APC 52.139.188.212/30, 20.43.146.44/30 該当なし

データベース コンテンツを検索するには、コネクタを構成するときに SQL クエリを指定する必要があります。 これらの SQL クエリでは、インデックスを作成するすべてのデータベース列 (つまり、ソース プロパティ) に名前を付ける必要があります。これには、すべての列を取得するために実行する必要がある SQL 結合が含まれます。 検索結果へのアクセスを制限するには、コネクタを構成するときに、SQL クエリ内Access Controlリスト (ACL) を指定する必要があります。

手順 3a: フル クロール (必須)

この手順では、データベースのフル クロールを実行する SQL クエリを構成します。 フル クロールでは、[ クエリ]、[ 検索]、または [取得] オプションを選択するすべての列またはプロパティが選択 されます。 ACL 列を指定して、検索結果のアクセスを特定のユーザーまたはグループに制限することもできます。

ヒント

必要なすべての列を取得するには、複数のテーブルを結合できます。

プロパティの例を含む OrderTable と AclTable を示すスクリプト。

データ列の選択 (必須) と ACL 列 (省略可能)

この例では、検索のデータを保持する 5 つのデータ列 (OrderId、OrderTitle、OrderDesc、CreatedDateTime、IsDeleted) を示します。 データの各行の表示アクセス許可を設定するには、必要に応じて、次の ACL 列 (AllowedUsers、AllowedGroups、DeniedUsers、DeniedGroups) を選択できます。 これらのすべてのデータ列には、 クエリ検索、または 取得のオプションもあります。

次のクエリ例に示すように、データ列を選択します。 SELECT OrderId, OrderTitle, OrderDesc, AllowedUsers, AllowedGroups, DeniedUsers, DeniedGroups, CreatedDateTime, IsDeleted

SQL コネクタでは、SELECT 句で英数字以外の文字を持つ列名は許可されないことに注意してください。 エイリアスを使用して、列名から英数字以外の文字を削除します。 例 - SELECT column_name AS columnName

検索結果へのアクセスを管理するには、クエリで 1 つ以上の ACL 列を指定します。 SQL コネクタを使用すると、レコード レベルごとにアクセスを制御できます。 テーブル内のすべてのレコードに対して同じアクセス制御を選択できます。 ACL 情報が別のテーブルに格納されている場合は、クエリでそれらのテーブルとの結合を行う必要がある場合があります。

上記のクエリで ACL 列を使用する方法を次に示します。 次の一覧では、4 つの アクセス制御メカニズムについて説明します

  • AllowedUsers: この列は、検索結果にアクセスできるユーザー ID の一覧を指定します。 次の例では、ユーザーの一覧: john@contoso.com、 keith@contoso.com、および lisa@contoso.com は、OrderId = 12 のレコードにのみアクセスできます。
  • AllowedGroups: この列は、検索結果にアクセスできるユーザーのグループを指定します。 次の例では、グループ sales-team@contoso.com は OrderId = 12 のレコードにのみアクセスできます。
  • DeniedUsers: この列は、検索結果にアクセス できない ユーザーの一覧を指定します。 次の例では、OrderId = 13 のレコードへのアクセス権を持たないユーザーとkeith@contoso.com、他のすべてのユーザーjohn@contoso.comがこのレコードにアクセスできます。
  • DeniedGroups: この列は、検索結果にアクセス できない ユーザーのグループを指定します。 次の例では、 と をグループ化 engg-team@contoso.com し pm-team@contoso.com 、OrderId = 15 のレコードにアクセスすることはできませんが、他のすべてのユーザーがこのレコードにアクセスできます。

プロパティの例を含む OrderTable と AclTable を示すサンプル データ。

サポートされているデータ型

次の表は、MS SQL および Azure SQL コネクタでサポートされている SQL データ型をまとめたものです。 テーブルには、サポートされている SQL データ型のインデックス作成データ型も要約されています。 インデックス作成でサポートされている Microsoft Graph コネクタのデータ型の詳細については、 プロパティ リソースの種類に関するドキュメントを参照してください。

カテゴリ ソース データ型 データ型のインデックス作成
日時 date
日付型
Datetime2
smalldatetime
日付型
正確な数値 Bigint
int
Smallint
Tinyint
int64
正確な数値 ビット ブール値
近似数値 浮動小数点数
本当の
double
文字の文字列 Char
Varchar
テキスト
string
Unicode 文字列 Nchar
Nvarchar
Ntext
string
String コレクション Char
Varchar
テキスト
stringcollection*
その他のデータ型 Uniqueidentifier string

*StringCollection として列のインデックスを作成するには、文字列を文字列コレクション型にキャストする必要があります。 これを行うには、フル クロール設定で [データ型の編集] リンクをクリックし、文字列を分割する区切り記号を指定して、StringCollection として適切な列を選択します。

現在直接サポートされていない他のデータ型の場合、列はサポートされているデータ型に明示的にキャストする必要があります。

透かし (必須)

データベースの過負荷を防ぐために、コネクタはフル クロール透かし列を使用してフル クロール クエリをバッチ処理して再開します。 透かし列の値を使用すると、後続の各バッチがフェッチされ、最後のチェックポイントからクエリが再開されます。 基本的に、このメカニズムはフル クロールのデータ更新を制御します。

次の例に示すように、透かしのクエリ スニペットを作成します。

  • WHERE (CreatedDateTime > @watermark). 予約済みの キーワード (keyword) @watermarkを使用して、透かしの列名を引用します。 透かし列の並べ替え順序が昇順の場合は、 を使用 >します。それ以外の場合は を使用します <
  • ORDER BY CreatedDateTime ASC. 基準値列を昇順または降順で並べ替えます。

次の図に示す構成では、 CreatedDateTime が選択された透かし列です。 行の最初のバッチをフェッチするには、透かし列のデータ型を指定します。 この場合、データ型は です DateTime

透かし列の構成。

最初のクエリでは、"CreatedDateTime > January 1, 1753 00:00:00" (DateTime データ型の最小値) を使用して、最初の N 行数をフェッチします。 最初のバッチがフェッチされた後、行が昇順で並べ替えられた場合、バッチで返される最大値 CreatedDateTime がチェックポイントとして保存されます。 たとえば、2019 年 3 月 1 日 03:00:00 です。 次に 、N 行の次のバッチは、クエリで "CreatedDateTime > March 1, 2019 03:00:00" を使用してフェッチされます。

論理的に削除された行をスキップする (省略可能)

データベース内の論理的に削除された行をインデックス付けから除外するには、論理的な削除列の名前と、行が削除されたことを示す値を指定します。

論理的な削除設定:

フル クロール: 検索アクセス許可を管理する

[ アクセス許可の管理 ] を選択して、アクセス制御メカニズムを指定するさまざまなアクセス制御 (ACL) 列を選択します。 フル クロール SQL クエリで指定した列名を選択します。

ACL の各列は、複数値の列である必要があります。 これらの複数の ID 値は、セミコロン (;)、コンマ (、) などの区切り記号で区切ることができます。 値区切り記号フィールドでこの 区切り記号 を指定する必要があります。

ACL としての使用では、次の ID の種類がサポートされています。

  • ユーザー プリンシパル名 (UPN): ユーザー プリンシパル名 (UPN) は、電子メール アドレス形式のシステム ユーザーの名前です。 UPN (例: john.doe@domain.com) は、ユーザー名 (ログオン名)、区切り記号 (@ 記号)、ドメイン名 (UPN サフィックス) で構成されます。
  • Microsoft Entra ID: Microsoft Entra ID では、すべてのユーザーまたはグループに'e0d3ad3d-0000-1111-2222-3c5f5c52ab9b' のようなオブジェクト ID があります。
  • Active Directory (AD) セキュリティ ID: オンプレミスの AD セットアップでは、すべてのユーザーとグループに、'S-1-5-21-3878594291-215959936-132693609-65242'のような不変の一意のセキュリティ識別子があります。

アクセス制御リストを構成するための検索アクセス許可の設定。

手順 3b: 増分クロール (省略可能)

この省略可能な手順では、データベースの増分クロールを実行する SQL クエリを指定します。 このクエリでは、SQL コネクタによって、前回の増分クロール以降のデータへの変更が決定されます。 フル クロールと同様に、[ クエリ]、[ 検索]、または [取得] オプションを選択するすべての列を選択 します。 フル クロール クエリで指定したのと同じ ACL 列のセットを指定します。

次の図のコンポーネントは、フル クロール コンポーネントに似ていますが、1 つの例外があります。 この場合、選択した透かし列は "ModifiedDateTime" です。 フル クロールの手順を確認して、増分クロール クエリを記述する方法を確認し、例として次の画像を参照してください。

OrderTable、AclTable、および使用できるプロパティの例を示す増分クロール スクリプト。

手順 4: プロパティ ラベルを割り当てる

一般的な セットアップ手順に従います。

手順 5: スキーマを管理する

一般的な セットアップ手順に従います。

手順 6: 検索アクセス許可を管理する

フル クロール画面で指定された ACL を使用するか、上書きしてコンテンツをすべてのユーザーに表示するようにすることができます。

手順 7: 更新設定を選択する

一般的な セットアップ手順に従います。

手順 8: 接続を確認する

一般的な セットアップ手順に従います。

トラブルシューティング

コネクタの構成中に発生する一般的なエラーとその考えられる理由を次に示します。

構成手順 エラー メッセージ 考えられる理由
フル クロール Error from database server: A transport level error has occurred when receiving results from the server. このエラーは、ネットワークの問題が原因で発生します。 Microsoft ネットワーク モニターを使用してネットワーク ログをチェックし、Microsoft カスタマー サポートにお問い合わせください。
フル クロール Column column_name returned from full crawl SQL query contains non-alphanumeric character SELECT 句の列名では、英数字以外の文字 (アンダースコアなど) は使用できません。 エイリアスを使用して列の名前を変更し、英数字以外の文字を削除します (例 - SELECT column_name AS columnName)。

制限事項

SQL コネクタには、プレビュー リリースで次の制限があります。

  • Microsoft SQL Server コネクタ: オンプレミス データベースは、バージョン 2008 以降SQL Server実行する必要があります。
  • Microsoft 365 サブスクリプションと Azure サブスクリプション (Azure SQL データベースをホストする) は、同じMicrosoft Entra ID 内にある必要があります。
  • ACL は、ユーザー プリンシパル名 (UPN)、Microsoft Entra ID、または Active Directory セキュリティを使用してのみサポートされます。
  • データベース列内のリッチ コンテンツのインデックス作成はサポートされていません。 このようなコンテンツの例としては、データベース列内にリンクとして存在する HTML、JSON、XML、BLOB、ドキュメント解析などがあります。