问题描述
我已经为此纠结了好几个小时,是时候寻求帮助了。
有谁知道在使用多个条件时如何使用 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