Generic SQL コネクタのステップ バイ ステップ

このトピックはステップ バイ ステップ ガイドです。 簡単なサンプル HR データベースを作成し、それを利用してユーザーとそのグループ メンバーシップをインポートします。

注意

Microsoft Entra ID では、MIM 同期のデプロイを必要とせずに、SQL データベースにユーザーをプロビジョニングするための軽量のエージェント ベースのソリューションが提供されるようになりました。 送信ユーザー プロビジョニングに使用することをお勧めします。 詳細については、こちらを参照してください

サンプル データベースの準備

SQL Serverを実行しているサーバーで、「付録 A」にある SQL スクリプトを実行します。このスクリプトは、GSQLDEMO という名前のサンプル データベースを作成します。 作成されたデータベースのオブジェクト モデルは次の図のようになります。
オブジェクト モデル

また、データベースに接続する際に利用するユーザーを作成します。 このチュートリアルでは、ユーザーは FABRIKAM\SQLUser という名前であり、ドメインに置かれています。

ODBC 接続ファイルの作成

Generic SQL コネクタは ODBC を使用してリモート サーバーに接続します。 最初に、ODBC 接続情報を含むファイルを作成する必要があります。

  1. サーバーで ODBC 管理ユーティリティを起動します。
    O D B C が入力された検索フィールドを示すスクリーンショット。
  2. [ファイル DSN]タブを選択します。 [ 追加...] をクリックします。
    [FILE D S N] タブが選択されている O D B C 管理ユーティリティのスクリーンショット。
  3. すぐに使用するドライバーは正常に動作するため、選択して [ 次へ>] をクリックします。
    新しいデータ ソースのドライバー オプションを示すスクリーンショット。
  4. ファイルに名前を付けます。たとえば、GenericSQL にします。
    フィールドに入力された新しいファイル名の例と、[次へ] ボタンを示すスクリーンショット。
  5. [完了] をクリックします。
    新しいデータ ソースの詳細と [完了] ボタンを示すスクリーンショット。
  6. 次に接続を構成します。 データ ソースに適切な説明を加え、SQL Server を実行しているサーバーの名前を指定します。
    説明とサーバー名の例と [次へ] ボタンを含む構成ウィザードを示すスクリーンショット。
  7. SQL による認証方法を選択します。 ここでは Windows 認証を使用します。
    統合 Windows 認証オプションが選択され、[次へ] ボタンが選択された認証手順を示すスクリーンショット。
  8. サンプル データベースの名前として、「 GSQLDEMO」と入力します。
    データベース フィールドに入力されたデータベース名と [次へ] ボタンを示すスクリーンショット。
  9. この画面ではすべて既定値のままにします。 [完了] をクリックします。
    ウィザードの最後の手順の既定の設定と [完了] ボタンを示すスクリーンショット。
  10. 問題なく動作することを確認するには、 [データ ソースのテスト]をクリックします。
    新しい O D B C データ ソースと [テスト データ ソース] ボタンの構成の詳細を示すスクリーンショット。
  11. テストの成功を確認します。
    テスト結果と [O K] ボタンを示すスクリーンショット。
  12. ODBC 構成ファイルが [ファイル DSN] に表示されます。
    [FILE D S N] タブが選択され、新しい O D B C 構成ファイルが一覧表示されている、O D B C 管理ユーティリティのスクリーンショット。

これで必要なファイルを用意できました。コネクタの作成を開始できます。

Generic SQL コネクタの作成

  1. Synchronization Service Manager の UI で、 [コネクタ][作成] の順に選びます。 [Generic SQL (Microsoft)] を選択し、わかりやすい名前を付けます。
    コネクタが選択され、[次へ] ボタンが選択された [コネクタの作成] ウィザードを示すスクリーンショット。
  2. 前のセクションで作成した DSN ファイルを見つけ、サーバーにアップロードします。 データベースに接続するための資格情報を指定します。
    資格情報が入力された D S N ファイルと [次へ] ボタンを示すスクリーンショット。
  3. このチュートリアルでは、わかりやすく UserGroup という 2 つのオブジェクト タイプを利用します。 固定値リスト フィールドに入力された 2 つのオブジェクトの種類と、[次へ] ボタンを示すスクリーンショット。
  4. 属性を検索する際、コネクタがテーブル自体を探し、これらの属性を検出するようにします。 Users は SQL の予約語であるため、角括弧 [ ] で指定する必要があります。
    ユーザーのテーブルとテーブル値の属性検出値と、[次へ] ボタンを示すスクリーンショット。
  5. 次に、アンカー属性と DN 属性を定義します。 Usersには、username 属性と EmployeeID 属性の組み合わせを使用します。 Groupには、GroupName を使用します (現実的ではありませんが、このチュートリアルでは十分です)。 ユーザー名、従業員 ID、グループ名を示すスクリーンショット。[次へ] ボタンが表示されています。
  6. 属性タイプの一部は SQL データベースで検出できません。 具体的には、参照属性タイプを検出できません。 グループ オブジェクト タイプについては、OwnerID と MemberID を参照に変更する必要があります。
    更新された所有者 ID フィールドとメンバー ID フィールドと [次へ] ボタンを示すスクリーンショット。
  7. 前の手順で参照属性として選択した属性には、それらの値を参照するオブジェクト タイプが必要になります。 ここでは User オブジェクト タイプです。
    選択されたオブジェクトの種類と [次へ] ボタンを示すスクリーンショット。
  8. [Global Parameters (グローバル パラメーター)] ページで、[Delta Strategy (デルタ方針)] として [透かし] を選択します。 日付/時刻形式 yyyy-MM-dd HH:mm:ssを入力します。 デルタ戦略のフィールドと日付と時刻の形式、および [次へ] ボタンを示すスクリーンショット。
  9. [Configure Partitions and Hierarchies (パーティションと階層の構成)] ページで、両方のオブジェクト タイプを選択します。 選択されているオブジェクトの種類と [次へ] ボタンの両方を示すスクリーンショット。
  10. [オブジェクトの種類を選択][属性の選択] で、両方のオブジェクト タイプとすべての属性を選択します。 [Configure Anchors (アンカーの構成)] ページで [完了] をクリックします。

実行プロファイルの作成

  1. Synchronization Service Manager UI で、[コネクタ][Configure Run Profiles (実行プロファイルの構成)] を選択します。 [ 新しいプロファイル] をクリックしますフル インポートから始めます。
    [名前] フィールドにフル インポートが入力され、[次へ] ボタンが入力された [プロファイルの実行の構成] ウィザードを示すスクリーンショット。
  2. タイプに [Full Import (Stage Only) (フル インポート (ステージのみ))]を選択します。
    選択した種類と [次へ] ボタンを示すスクリーンショット。
  3. パーティションに [OBJECT=User]を選択します。
    選択されたパーティションと [次へ] ボタンを示すスクリーンショット。
  4. [テーブル] を選択し、「[USERS]」と入力します。 [Multi-Valued Object Type (複数値オブジェクト タイプ)] セクションまで下へスクロールし、次の図のようにデータを入力します。 [完了] を選択し、手順を保存します。
    操作方法 [テーブル] が選択され、テーブル フィールドにユーザーが表示されているスクリーンショット。
    名前と結合条件に対して入力された複数値のオブジェクト型の値を示すスクリーンショット。
  5. [新しいステップ] を選択します。 今度は [OBJECT=Group]を選択します。 最後のページで、次の図のような構成を使用します。 [完了] をクリックします。
    テーブル フィールドで選択されたテーブルとグループの操作方法を示すスクリーンショット。
    テーブルと結合条件の名前に入力されたオブジェクトの種類の値を示すスクリーンショット。
  6. 任意: 必要であれば、追加の実行プロファイルを構成できます。 このチュートリアルでは、フル インポートのみが使用されています。
  7. [OK] をクリックし、実行プロファイルの変更を完了します。

テスト データを追加し、インポートをテストする

サンプル データベースにテスト データを入力します。 入力が完了したら、[実行] を選択し、[Full import (フル インポート)] を選択します。

以下は 2 つの電話番号を持つユーザーと何名かのメンバーが属するグループの例です。
2 つの電話番号を持つユーザーを示すデータのスクリーンショット。
一部のメンバーを含むグループを示すデータのスクリーンショット。

Azure BLOB ストレージ アカウントにデータを取得/アップロードする方法については、

サンプル データベースを作成する SQL スクリプト

---Creating the Database---------
Create Database GSQLDEMO
Go
-------Using the Database-----------
Use [GSQLDEMO]
Go
-------------------------------------
USE [GSQLDEMO]
GO
/****** Object:  Table [dbo].[GroupMembers]   ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[GroupMembers](
    [MemberID] [int] NOT NULL,
    [Group_ID] [int] NOT NULL
) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[GROUPS]   ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[GROUPS](
    [GroupID] [int] NOT NULL,
    [GROUPNAME] [nvarchar](200) NOT NULL,
    [DESCRIPTION] [nvarchar](200) NULL,
    [WATERMARK] [datetime] NULL,
    [OwnerID] [int] NULL,
PRIMARY KEY CLUSTERED
(
    [GroupID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[USERPHONE]   ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[USERPHONE](
    [USER_ID] [int] NULL,
    [Phone] [varchar](20) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[USERS]   ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[USERS](
    [USERID] [int] NOT NULL,
    [USERNAME] [nvarchar](200) NOT NULL,
    [FirstName] [nvarchar](100) NULL,
    [LastName] [nvarchar](100) NULL,
    [DisplayName] [nvarchar](100) NULL,
    [ACCOUNTDISABLED] [bit] NULL,
    [EMPLOYEEID] [int] NOT NULL,
    [WATERMARK] [datetime] NULL,
PRIMARY KEY CLUSTERED
(
    [USERID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[GroupMembers]  WITH CHECK ADD  CONSTRAINT [FK_GroupMembers_GROUPS] FOREIGN KEY([Group_ID])
REFERENCES [dbo].[GROUPS] ([GroupID])
GO
ALTER TABLE [dbo].[GroupMembers] CHECK CONSTRAINT [FK_GroupMembers_GROUPS]
GO
ALTER TABLE [dbo].[GroupMembers]  WITH CHECK ADD  CONSTRAINT [FK_GroupMembers_USERS] FOREIGN KEY([MemberID])
REFERENCES [dbo].[USERS] ([USERID])
GO
ALTER TABLE [dbo].[GroupMembers] CHECK CONSTRAINT [FK_GroupMembers_USERS]
GO
ALTER TABLE [dbo].[GROUPS]  WITH CHECK ADD  CONSTRAINT [FK_GROUPS_USERS] FOREIGN KEY([OwnerID])
REFERENCES [dbo].[USERS] ([USERID])
GO
ALTER TABLE [dbo].[GROUPS] CHECK CONSTRAINT [FK_GROUPS_USERS]
GO
ALTER TABLE [dbo].[USERPHONE]  WITH CHECK ADD  CONSTRAINT [FK_USERPHONE_USER] FOREIGN KEY([USER_ID])
REFERENCES [dbo].[USERS] ([USERID])
GO
ALTER TABLE [dbo].[USERPHONE] CHECK CONSTRAINT [FK_USERPHONE_USER]
GO