无法从OLE DB提供程序“ ADsDSOObject”获取链接服务器“ ADSI”的行。
我认为是由于1000行限制(或sqlServer 2008中的901行)导致的问题。我可以分页查询,但我正在寻找一种解决方法,一次可以检索1000多个。
如果有帮助,我正在使用sqlServer 2008 R2。这是我的查询>
SELECT samaccountname AS Account, ISNULL(givenName, '''') AS givenName, ISNULL(SN, '''') AS SN, ISNULL(DisplayName, '''') as DisplayName, ISNULL(Title, '''') AS Title
FROM OpenQuery(ADSI,
'SELECT SamAccountName, givenName, SN, DisplayName, Title
FROM ''LDAP://corpdomain.corp''
WHERE objectClass = ''User'' and (SN = ''*'' or givenName = ''*''
有任何想法吗?
编辑-经过进一步检查,我意识到我也无法正确分页此查询。>是否有人对解决方案有任何建议,可以使我分页结果,或者可以使我返回大于901的变通办法?
我只是通过最佳地应用页面调度解决了我面临的相同问题(并且我能够成功地从AD检索大约5万个登录名,并且从AD域中获取单个登录帐户也不失踪):
您需要通过遍历属性的字符来解决ADSI查询限制。在此处查看解决方案:http ://www.sqlservercentral.com/Forums/Topic231658-54-1.aspx#bm1249991
通过编写SELECT TOP 901 ...
IN PLACE OF JUST解决了该错误SELECT
。
是的,此问题与使用sqlServer 2008 R2有关。从2005年到2008年数据库迁移后,我遇到了这个问题,因为在sql Server 2008中,限制为901行,而在sql Server 2005中限制为1000行(不同之处是我们需要编写select TOP 901,而不是在sql Server 2005中是必需的,否则程序将失败并显示错误)