共用方式為


通用 SQL 連接器逐步指南

這個主題是一個逐步教學指南。 它會建立簡單的範例 HR 資料庫,並將其用於匯入某些使用者及其群組成員資格。

備註

Microsoft Entra ID 現在提供輕量型代理程式型解決方案,以將使用者布建到 SQL 資料庫,而不需要 MIM 同步部署。 建議將其用於傳出使用者設定。 深入瞭解

準備範例資料庫

在執行 SQL Server 的伺服器上,執行 附錄 A中找到的 SQL 腳本。此腳本會建立名稱為 GSQLDEMO 的範例資料庫。 所建立資料庫的物件模型看起來像這樣:
物件模型

同時建立您想要用來連線到資料庫的使用者。 在本逐步解說中,用戶稱為 FABRIKAM\SQLUser,並位於網域中。

建立 ODBC 連接檔案

一般 SQL 連接器使用 ODBC 連線到遠端伺服器。 首先,我們需要使用 ODBC 連接資訊來建立檔案。

  1. 在您的伺服器上啟動 ODBC 管理公用程式:
    螢幕快照,其中顯示已輸入 O D B C 的搜尋欄位。
  2. 選取 [檔案 DSN] 索引標籤。 按一下 新增...
    已選取 [檔案 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 中。
    O D B C 管理公用程式的螢幕快照,其中已選取 [檔案 D S N] 索引標籤,並列出新的 O D B C 組態檔。

我們現在有所需的檔案,而且可以開始建立連接器。

建立一般 SQL 連接器

  1. 在 Synchronization Service Manager 的用戶介面中,選取 [連接器],然後 [建立]。 選取 [一般 SQL (Microsoft),併為其指定描述性名稱。
    顯示 [建立連接器精靈] 的螢幕快照,其中已選取連接器和 [下一步] 按鈕。
  2. 尋找您在上一節中建立的 DSN 檔案,並將其上傳至伺服器。 提供認證以連線到資料庫。
    螢幕快照,其中顯示已輸入認證的 D S N 檔案和 [下一步] 按鈕。
  3. 在本逐步解說中,我們簡化並假設有兩種物件類型:UserGroup螢幕快照,顯示固定值清單欄位中輸入的兩個物件類型,以及 [下一步] 按鈕。
  4. 若要尋找屬性,我們想要連接器查看數據表本身來偵測這些屬性。 由於 Users 是 SQL 中的保留字,因此我們需要在方括號 [ ] 中提供它。
    螢幕快照,其中顯示屬性偵測值之表格與用戶之表格值,以及 [下一步] 按鈕。
  5. 定義錨點屬性和 DN 屬性的時間。 針對 使用者,我們會使用兩個屬性 username 和 EmployeeID 的組合。 對於 群組,我們會使用 GroupName(雖然這在現實中不現實,但在這個範例中是可行的)。 顯示使用者名稱、員工標識碼和組名的螢幕快照,其中包含 [下一步] 按鈕。
  6. 並非所有屬性類型都可以在 SQL 資料庫中偵測到。 參考屬性類型特別無法做到。 針對群組物件類型,我們需要將 OwnerID 和 MemberID 變更為參考。
    螢幕快照,其中顯示更新的擁有者標識碼和成員標識符字段,以及 [下一步] 按鈕。
  7. 我們在上一個步驟中選取做為參考屬性的屬性需要物件類型,這些值是參考的。 在我們的案例中,User 物件類型。
    螢幕快照,其中顯示已選取的物件類型,以及 [下一步] 按鈕。
  8. 在 [全域參數] 頁面上,選取 [水印] 作為差異策略。 也請輸入日期/時間格式 yyyy-MM-dd HH:mm:ss螢幕快照,其中顯示差異策略和日期和時間格式的欄位,以及 [下一步] 按鈕。
  9. 在 [設定分割區和階層 頁面上,選取這兩種物件類型。 螢幕快照,其中顯示已選取的物件類型,以及 [下一步] 按鈕。
  10. 在 [選取物件類型] 和 [選取屬性]中,選取兩者的物件類型和所有屬性。 在 [設定錨點] 頁面上,按一下 [完成]

建立執行配置檔

  1. 在 Synchronization Service Manager UI 中,選取 [連接器],然後 [配置執行設定檔案]。 點選 新增設定檔。 我們從 完整匯入開始。
    螢幕快照顯示「設定執行配置檔精靈」,名稱欄位中已輸入「完整匯入」,並有「下一步」按鈕。
  2. 選取類型 [完整匯入(僅限階段)]
    螢幕快照,其中顯示已選取的類型和 [下一步] 按鈕。
  3. 選擇分割區 OBJECT=User
    螢幕快照顯示已選取的磁碟分割區和 [下一步] 按鈕。
  4. 選擇 資料表,然後輸入 [USERS] 。 向下捲動至 [多重值物件類型] 區段,然後輸入如下圖所示的數據。 選取 [完成],以儲存此步驟。
    螢幕快照,其中顯示已選取的作業方法 [數據表] 和 [數據表] 欄位中的使用者。
    螢幕快照,其中顯示針對名稱和聯結條件輸入的多值物件類型值。
  5. 選取 新增步驟。 這次,請選取 [OBJECT=Group]。 請在最後一頁按照下圖所示進行配置。 按一下完成
    螢幕快照,其中顯示數據表欄位中已選取和群組作業方法的數據表。
    螢幕快照,顯示為資料表名稱和聯結條件輸入的物件類型值。
  6. 可選的:如果您想要,您可以設定額外的執行設定檔。 在本操作說明中,只會使用完整匯入。
  7. 按兩下 [確定],以完成變更執行設定檔。

新增一些測試數據並測試匯入

填寫範例資料庫中的一些測試數據。 當您準備好時,請選取 [執行],然後 [完整匯入]

這是一位有兩個電話號碼的使用者和一個有一些成員的群組。
顯示具有兩個電話號碼之用戶的螢幕快照。
顯示具有一些成員之群組的數據螢幕快照。

附錄 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