Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从active directory获取说明_Sql Server_Sql Server 2008_Active Directory - Fatal编程技术网

Sql server 从active directory获取说明

Sql server 从active directory获取说明,sql-server,sql-server-2008,active-directory,Sql Server,Sql Server 2008,Active Directory,我正在使用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 VARCH

我正在使用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;

这很有效。现在,我想提取组的描述,但我似乎无法找到字段的名称。帮助?

AD中组的说明存储在“说明”属性中

参考:


编辑:在SQL中使用ADSI链接服务器时,似乎无法实际提取description属性,因为它是一个多值属性。有关从AD提取数据以导入SQL server的另一种方法,请参阅。

AD中组的说明存储在“说明”属性中

参考:


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

ok。我向查询中添加了说明,并得到以下错误:Msg 7341,级别16,状态2,第1行无法获取列[ADSDSOObject]的当前行值。链接服务器ADSI的OLE DB提供程序ADSDSOObject中的说明。由于符号不匹配或溢出以外的原因,无法转换数据值。@DForck42:您可能无法通过受损的OLE DB提供程序获取数据值,因为描述可能是一个多值属性。不幸的是,我认为你对此无能为力……好吧。我向查询中添加了说明,并得到以下错误:Msg 7341,级别16,状态2,第1行无法获取列[ADSDSOObject]的当前行值。链接服务器ADSI的OLE DB提供程序ADSDSOObject中的说明。由于符号不匹配或溢出以外的原因,无法转换数据值。@DForck42:您可能无法通过受损的OLE DB提供程序获取数据值,因为描述可能是一个多值属性。不幸的是,我认为你对此无能为力。。。。