从SQL Server 2008链接服务器检索> 901行到Active Directory

bgs*_*264 7 linked-server active-directory sql-server-2008

在SQL Server 2008(版本10.0.4000)中,我已经创建了一个到Active Directory服务器的链接服务器.

这个查询:

select  TOP 901 *
from  openquery(adsisca, '
select  givenName,
                sn,
                sAMAccountName          
from    ''LDAP://10.1.2.3:389''
where   objectCategory = ''Person''
        and
        objectClass = ''InetOrgPerson''
')
Run Code Online (Sandbox Code Playgroud)

作品.

但是,更改查询并尝试检索902行不会:

select  TOP 902 *
    from  openquery(adsisca, '
    select  givenName,
                    sn,
                    sAMAccountName          
    from    ''LDAP://10.1.2.3:389''
    where   objectCategory = ''Person''
            and
            objectClass = ''InetOrgPerson''
    ')
Run Code Online (Sandbox Code Playgroud)

错误是:

消息7330,级别16,状态2,行1无法从OLE DB提供程序"ADSDSOObject"获取链接服务器"adsisca"的行.

我发现其他人在论坛上讨论相同的问题,他们从来没有修复它,只是围着它编写多个视图并将它们联合在一起.

是否有一个更优雅的修复,是否有一个设置,我可以在某处更改以检索超过901行?

小智 7

使用union来规避限制..

像这样 :

select  TOP 901 *
from  openquery(adsisca, '
select  givenName,
                sn,
                sAMAccountName          
from    ''LDAP://10.1.2.3:389''
where   objectCategory = ''Person''
        and
        objectClass = ''InetOrgPerson''
        and
        sAMAccountName < ''m''
')
union
select  TOP 901 *
from  openquery(adsisca, '
select  givenName,
                sn,
                sAMAccountName          
from    ''LDAP://10.1.2.3:389''
where   objectCategory = ''Person''
        and
        objectClass = ''InetOrgPerson''
        and
        sAMAccountName >= ''m''
')
Run Code Online (Sandbox Code Playgroud)


Ray*_*und 2

您需要更改 Active Directory 中的 MaxPageSize 设置。为此,您需要使用 Ntdsutil.exe,您可以在运行命令中键入该程序,然后按照以下步骤操作

  1. 在 Ntdsutil.exe 命令提示符处,键入LDAP policies,然后按 Enter。
  2. 在 LDAP 策略命令提示符下,键入Set MaxPageSize to 2000。-> 或任何你想要的数字
  3. 要查看更改,请键入Show Values
  4. 要保存更改,请键入Commit Changes
  5. 要退出,请输入q