【问题标题】:Get description from active directory从活动目录获取描述
【发布时间】:2011-06-27 03:23:58
【问题描述】:

我正在使用 sql server 从 Active Directory 中导入组和用户。我找到了以下代码来拉取组和用户。

CREATE TABLE ##Groups ( CN VARCHAR(128), DN VARCHAR(1024), Email VARCHAR(128), ADSPath VARCHAR(1024));
CREATE TABLE ##Users ( DistributionGroup VARCHAR(128), FirstName VARCHAR(50), LastName VARCHAR(50), EmailAddress VARCHAR(128));

DECLARE @sql VARCHAR(1024)

SET @sql = 'INSERT INTO ##Groups (CN, DN, Email, ADSPath) SELECT CN, distinguishedName DN, mail Email, ADSPath FROM OpenQuery(ADSI, ''<LDAP://controller.domain.com:389/DC=domain,DC=com>;(&(objectClass=Group));cn, distinguishedName, mail, ADSPath;subtree'') ORDER BY distinguishedName';
EXEC(@sql);

DECLARE @CN VARCHAR(128)
DECLARE @DN VARCHAR(1024)

SELECT TOP 1 @CN = CN, @DN = DN FROM ##Groups

WHILE EXISTS(SELECT DN FROM ##Groups WHERE DN > @DN)
BEGIN

      SET @sql = 'INSERT INTO ##Users (DistributionGroup, Firstname, LastName, EmailAddress) SELECT '''+@CN+''' [Distribution Group], ISNULL(givenName, '''') FirstName, ISNULL(sn, '''') LastName, mail EmailAddress FROM OpenQuery(ADSI, ''<LDAP://controller.domain.com:389/DC=domain,DC=com>;(&(objectClass=User)(memberOf='+@DN+'));givenName, sn, mail;subtree'')'; 
      EXEC(@sql)

      SELECT TOP 1 @CN = CN, @DN = DN FROM ##Groups WHERE DN > @DN
END

SELECT * FROM ##Groups;
SELECT * FROM ##Users;

DROP TABLE ##Groups;
DROP TABLE ##Users;

效果很好。现在,我想提取组的描述,但我似乎无法找出该字段的名称。帮忙?

【问题讨论】:

    标签: sql-server sql-server-2008 active-directory


    【解决方案1】:

    AD 中组的描述存储在 description 属性中。

    参考:Microsoft AD Schema Docs

    编辑: 似乎您实际上无法在 SQL 中使用 ADSI 链接服务器时提取描述属性,因为它是一个多值属性。有关从 AD 中提取数据以导入 SQL Server 的替代方法,请参阅my answer to this question

    【讨论】:

    • 好的。我在查询中添加描述并收到此错误:消息 7341,级别 16,状态 2,第 1 行无法从链接服务器“ADSI”的 OLE DB 提供程序“ADSDSOObject”获取列“[ADSDSOObject].description”的当前行值.由于符号不匹配或溢出以外的原因,无法转换数据值。
    • @DForck42:由于description 是一个潜在的多值属性,您可能无法通过受损的 OLE DB 提供程序获得它。不幸的是,我认为您对此无能为力....
    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多