具有 OPENROWSET 多个条件的 LDAP ADSDSOObject

问题描述

我已经为此纠结了好几个小时,是时候寻求帮助了。

有谁知道在使用多个条件时如何使用 OPENROWSET 查询 LDAP ADSDSOObject? 我一直在尝试,但不断收到错误消息。问题在于 () 括号。有人可以告诉我如何解决这个问题吗?谢谢!

SELECT  TOP 901
            [USN]                 =  CONVERT(BIGINT,usnCreated),[Name]                =  CONVERT(VARCHAR(500),name),[Groups]              =  CONVERT(VARCHAR(MAX),distinguishedname),[System_Flags]        =  CONVERT(BIGINT,systemFlags),[Group_Created_Date]  =  whenCreated,[Group_Last_Modified] =  whenChanged
   FROM OPENROWSET('ADSDSOObject','source'; 'UserName'; 'Password','

  SELECT  name,distinguishedname,usnCreated,systemFlags,whenChanged,whenCreated
    FROM  ''LDAP://DC=one,DC=two''
   WHERE  (   objectClass  = ''group''
          OR  objectClass  = ''groupofnames'' 
          OR  objectClass  = ''groupofuniquenames''
          )
     AND  whenChanged > ''19000101000000.0Z''
ORDER BY  usnCreated

')

解决方法

OLE DB 查询不是 SQL。这是SQL方言。 请参考:SQL Dialect

SELECT  TOP 901
            [USN]                 =  CONVERT(BIGINT,usnCreated),[Name]                =  CONVERT(VARCHAR(500),name),[Groups]              =  CONVERT(VARCHAR(MAX),distinguishedName),[System_Flags]        =  CONVERT(BIGINT,systemFlags),[Group_Created_Date]  =  whenCreated,[Group_Last_Modified] =  whenChanged
   FROM OPENROWSET('ADSDSOObject','source'; 'UserName'; 'Password','
  SELECT  name,distinguishedName,usnCreated,systemFlags,whenChanged,whenCreated
    FROM  ''LDAP://your ldap...''
   WHERE objectClass  = ''group''
    or objectClass  = ''groupofnames'' 
          OR  objectClass  = ''groupofuniquenames''
')
Where whenChanged > '1900-01-01'
ORDER BY  usnCreated