当前位置: 首页 > 面试题库 >

错误:无法从OLE DB提供程序``DsDSOObject''中获取链接服务器``DSI''的行。

莫泓
2023-03-14
问题内容

当我尝试向用户查询AD时,出现以下错误:

无法从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时,出现以下错误:

无法从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中是必需的,否则程序将失败并显示错误)



 类似资料:
  • null 如在第一个链接中所回答的,尝试类路径 正如第二个链接中所回答的,尝试了Multidex也没有成功。 注意:示例代码正在运行。 更新: 有趣的是,即使我只添加依赖项,也会出现同样的错误

  • 在和之后 在启动应用程序时,我开始得到以下错误: 在下一行中还添加了:

  • 我有以下方法返回AmazonS3上传文件。在本地环境中,我必须连接到不同区域的s3 bucket,但在其他环境中,s3 bucket和应用程序代码是相同的aws区域。 当我从本地运行时,我得到了以下异常,我错过了什么? 原因:com.amazonaws.sdkclientexception:无法通过区域提供程序链找到区域。必须在生成器或安装环境中提供显式区域才能提供区域。在com.amazonaw

  • 问题内容: 我正在使用predis并订阅了频道并进行监听,它抛出错误并死了,如下图所示,过了60秒后,肯定不是我的Web服务器错误或超时。 目前正在讨论的一个类似的问题在这里。无法得到太多。 我尝试将predis conf文件中的connection_timeout设置为0,但没有太大帮助。 另外,如果我继续使用(向其发送数据并进行处理)该工作程序,则不会出现任何错误。因此,它可能在某处超时,并且

  • 问题内容: 我正在尝试建立从到的链接服务器。在没有密码保护。正如我在其他文章(特别是这篇文章)中看到的那样,这通常是由于当前用户无法访问NetworkService文件夹中的Temp文件夹。由于我们在中运行此命令,因此目录结构与大多数人所不知道的完全不同。我已允许访问中的每个临时文件夹,但无济于事。 这是我用来添加链接服务器的过程: 它可以毫无问题地创建链接服务器,但是我无法查看数据库的表/视图。