您可以通过两种途径将 AC 用户类同步到表中。您可以在 SSIS 数据流任务中使用 ADO 源,也可以编写自定义 .NET 代码作为脚本源的一部分。正确的答案取决于您的团队维护和排除特定解决方案的能力以及您的 AD 树/林的大小。如果您是一家小商店(不到一千人),那么任何事情都会奏效。如果您是一家较大的商店,那么您需要担心查询机制和返回的总行数,因为在单个查询中可以返回多少个结果是有上限的。在这种情况下,脚本任务可能更有意义,因为您可以更轻松地编写查询来提取以 A、B 等开头的所有帐户。我从未使用过希伯来语,所以我假设可以做类似的事情过滤 aleph、bet 等。
一般步骤
确定您的域控制器,因为您需要知道从哪个服务器询问信息。我不知道如何处理 Azure Active Directory 请求,因为我相信它在那里的工作方式有点不同,但还没有需要它的客户端工作。
为 ADO.NET 创建一个连接管理器。使用“.Net Providers for OleDb\OLE DB Provider for Microsoft Directory Services”并将其指向您的 DC。
编写查询以提取您需要的数据。根据评论,您似乎想要这样的东西
SELECT
distinguishedName
, mail
, samaccountname
, mobile
, telephoneNumber
, objectSid
, userAccountControl
, title
, sn
FROM
'LDAP://DC=domain,DC=net'
WHERE
sAMAccountType = 805306368
ORDER BY
sAMAccountName ASC
使用该查询,我们将添加一个数据流任务,并在其中添加一个 ADO.NET 源。将其配置为使用我们的 ADO.NET 连接管理器并使用上述查询(调整 LDAP 行和您需要/不需要的任何其他字段)
将 OLE DB 连接管理器添加到您的包中,并将其指向将记录数据的数据库。
将 OLE DB 目标添加到数据流并将 ADO.NET 源的输出线连接到此目标。在下拉列表和“列”选项卡上选择表,确保所有列都已连接。您可能会遇到数据类型不匹配的问题,因此您需要弄清楚如何处理 - 要么更改表定义以匹配源,要么您需要将数据转换/派生列组件添加到数据流将数据修改成正确的形状。
您可能很想加入群组成员资格。不要。将其作为一个单独的任务,因为一个人可能是许多组的成员(在一个客户中,我在 94 个组中)。此外,MemberOf 数据类型是 SSIS 无法处理的 DistinguishedName、DN。因此,请在将类型添加到 AD 查询之前检查它们。
参考文献
ldap query to get disabled user records with whenchanged within 30 days
http://billfellows.blogspot.com/2011/04/active-directory-ssis-data-source.html
http://billfellows.blogspot.com/2013/11/biml-active-directory-ssis-data-source.html