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