このトピックは、ステップ バイ ステップ ガイドです。 簡単なサンプル HR データベースを作成し、一部のユーザーとそのグループ メンバーシップをインポートするために使用します。
注
Microsoft Entra ID では、MIM 同期のデプロイを必要とせずに、ユーザーを SQL データベースにプロビジョニングするための軽量のエージェント ベースのソリューションが提供されるようになりました。 アウトバウンド ユーザー プロビジョニングに使用することをお勧めします。 詳細については、こちらを参照してください。
サンプル データベースの準備
SQL Server を実行しているサーバーで、「 付録 A」にある SQL スクリプトを実行します。このスクリプトは、GSQLDEMO という名前のサンプル データベースを作成します。 作成されたデータベースのオブジェクト モデルは、次の図のようになります。
また、データベースへの接続に使用するユーザーを作成します。 このチュートリアルでは、ユーザーを FABRIKAM\SQLUser と呼び、ドメインに配置します。
ODBC 接続ファイルを作成する
汎用 SQL コネクタでは、ODBC を使用してリモート サーバーに接続しています。 まず、ODBC 接続情報を含むファイルを作成する必要があります。
- サーバーで ODBC 管理ユーティリティを起動します。
- [ ファイル DSN] タブを選択します。 [ 追加...] をクリックします。
- 既定のドライバーで問題ありません。それを選択し、[次へ]> をクリックしてください。
- ファイルに GenericSQL などの名前を付けます。
- [完了] をクリックします。
- 接続を構成する時間。 データ ソースに適切な説明を指定し、SQL Server を実行しているサーバーの名前を指定します。
- SQL で認証する方法を選択します。 この場合は、Windows 認証を使用します。
- サンプル データベースの名前 GSQLDEMO を指定します。
- この画面では、すべてを既定値のままにします。 [完了] をクリックします。
- すべてが期待どおりに動作していることを確認するには、[ データ ソースのテスト] をクリックします。
- テストの成功を確認します。
- これで、ODBC 構成ファイルがファイル DSN に表示されるようになります。
これで必要なファイルが作成され、コネクタの作成を開始できます。
汎用 SQL コネクタを作成する
- Synchronization Service Manager UI で、[ コネクタ ] と [作成] を選択します。 汎用 SQL (Microsoft) を選択し、わかりやすい名前を付けます。
- 前のセクションで作成した DSN ファイルを見つけて、サーバーにアップロードします。 データベースに接続するための資格情報を指定します。
- このチュートリアルでは、 ユーザー と グループの 2 種類のオブジェクトがあると簡単に説明します。
- 属性を見つけるには、コネクタでテーブル自体を調べることでこれらの属性を検出します。 ユーザーは SQL の予約語であるため、角かっこ [ ] で指定する必要があります。
- アンカー属性と DN 属性を定義する時間。 ユーザーの場合は、2 つの属性のユーザー名と EmployeeID の組み合わせを使用します。 グループの場合は GroupName を使用します (実際には現実的ではありませんが、このチュートリアルでは機能します)。
- SQL データベースですべての属性の種類を検出できるわけではありません。 具体的には、参照属性タイプを検出できません。 グループ オブジェクトの種類については、OwnerID と MemberID を参照するように変更する必要があります。
- 前の手順で参照属性として選択した属性には、これらの値が参照であるオブジェクト型が必要です。 この例では、User オブジェクト型です。
- [Global Parameters (グローバル パラメーター)] ページで、[Delta Strategy (デルタ方針)] として [透かし] を選択します。 日付/時刻形式 yyyy-MM-dd HH:mm:ss も入力します。
- [ パーティションと階層の構成 ] ページで、両方のオブジェクトの種類を選択します。
- [ オブジェクトの種類の選択] と [ 属性の選択] で、オブジェクトの種類とすべての属性の両方を選択します。 [ アンカーの構成 ] ページで、[ 完了] をクリックします。
実行プロファイルの作成
- Synchronization Service Manager UI で、[ コネクタ] を選択し、[ 実行プロファイルの構成] を選択します。 [ 新しいプロファイル] をクリックします。 完全インポートから始めます。
- 完全インポート (ステージのみ) の種類を選択します。
- パーティション OBJECT=User を選択します。
- [テーブル] を選択し、「USERS」と入力します。 複数値のオブジェクトの種類セクションまで下にスクロールし、次の図のようにデータを入力します。 [完了] を選択して手順を保存します。
- 新しいステップを選択します。 今回は、 OBJECT=Group を選択します。 最後のページで、次の図のように構成を使用します。 [完了] をクリックします。
- 省略可能: 必要に応じて、追加の実行プロファイルを構成できます。 このチュートリアルでは、フル インポートのみを使用します。
- [ OK] を クリックして実行プロファイルの変更を完了します。
テスト データを追加してインポートをテストする
サンプル データベースにテスト データを入力します。 準備ができたら、[ 実行 ] と [ フル インポート] を選択します。
2 つの電話番号を持つユーザーと、一部のメンバーを持つグループを次に示します。
付録 A
サンプル データベースを作成する 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