通过使用 ADSI 来执行一个 SQL 分布式查询

文章翻译 文章翻译
文章编号: 299410 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文提供了有关使用 Active Directory 服务接口 (ADSI) OLEDB 提供程序从 SQL Server 执行分布式的查询的信息。

更多信息

要求和一般信息

分布式的查询使开发人员来填充 SQL Server 表或视图与 Active Directory 或其他轻型目录访问协议 (LDAP) 服务器中的数据。 若要通过使用 ADSI 执行分布式的查询,服务器必须运行 7.0 或更高版本 SQL Server。ADSI 为 Windows 2000 中的因此没有其他安装所需的操作系统的某个系统组件。 如果服务器的操作系统是 Windows NT 4.0,必须安装 Windows NT 4.0 的活动目录客户端扩展 (DSClient)。 有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
288358如何安装 Active Directory 客户扩展
下面的 MSDN 库文章中,可以在"联接异类数据"下找到的执行分布式的查询使用 ADSI 的分步过程:
加入异类数据
http://msdn.microsoft.com/en-us/library/aa746379.aspx
当发出 OPENQUERY 命令时,SQL Server 将调用 ADsDSOObject,sp_addlinkedserver 函数中设置了 ADSI 的 oledb。 提供程序会将查询传递到基础 ADSI lDirectorySearch 接口函数。 这些 ADSI 函数将进行必要的 LDAP 调用,至所需的服务器。 然后将备份相同的图层传递从服务器响应,给 SQL Server。

可以使用 LDAP 或 SQL 方言中的查询。在下面的 MSDN 文章下找不到搜索与 ADSI 的 OLEDB 提供程序的其他信息:
搜索 Active Directory
http://msdn.microsoft.com/en-us/library/aa746468(VS.85).aspx
在以下副标题在 MSDN 中下找到用两种方言的讨论:
方言
http://msdn.microsoft.com/en-us/library/aa772377(VS.85).aspx
如果一个星号指定的属性列表,ADSI OLEDB 提供程序返回一个包含仅在每个条目的 ADsPath 的记录集。ADsPath 是客户端生成属性,而将保证返回作为 singled 重要属性。

无服务器绑定字符串是一个不包含名称或目标服务器的 IP 地址。 无服务器绑定用于确定最佳的 Windows 2000 域控制器来处理该请求的位置。 当目标服务器不是默认的域的 Windows 2000 域控制器时,不能使用无服务器绑定。 在 $ 无服务器绑定上的其他信息,请参阅
无服务器绑定和 $ RootDSE
http://msdn.microsoft.com/en-us/library/ms677945.aspx
在白皮书中的示例中,将与联系 LDAP 服务器使用凭据在其下进行 OPENQUERY 调用。 这取决于您的应用程序如何设计,可能也可能不是您所希望。 如果使用 SQL Server 身份验证,而不是 Windows 身份验证,则 SQL 凭据将被传送到目录。 如果目标目录服务不支持 Windows 身份验证,则也会发生身份验证问题。 有关使用 ADSI 来查询这些 LDAP 服务器的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
251195如何使用 ADSI 来查询第三方 LDAP 服务器
如果这是不值得为 OPENQUERY 调用使用相同的凭据与在目录,sp_addlinksrvlogin 一个可用于改变联系远程服务器,该标识。 实现 sp_addlinksrvlogin 时 ADSI 将调用到目标目录服务的简单绑定使用 rmtuserrmtpassword 参数中指定的信息。 值得注意简单绑定将传递到目录服务器以明文凭据。这有许多的目录服务器将能够理解它,但一个缺点是用户名和密码将会显示在 $ 网络监视器上的优点。 有关详细信息简单绑定请参阅:
ldap_simple_bind_s
http://msdn.microsoft.com/en-us/library/aa366995.aspx
一旦添加,sp_addlinksrvlogin 可以通过调用 sp_droplinkedsrvlogin 中删除。

限制

使用 OPENQUERY 语句以从 LDAP 服务器提取信息的过程将不会面临的一些限制。 限制可以在某些种情况下被规避,但必须在其他应用程序设计进行更改。外部应用程序或 COM 对象,使用 ADSI 从 LDAP 服务器中检索信息并使用 ADO 或其他数据访问方法,然后生成 SQL 中的表是另一种可行的方法。

第一个限制是多值的属性不能返回在该结果集 SQL Server。 ADSI 将从定义结构和类和所使用的服务器的属性的语法的 LDAP 服务器读取架构信息。 如果为多值属性架构中定义从 LDAP 服务器请求,则该属性,则它不能返回 OPENQUERY 语句中。

它是典型的目录服务器强制执行服务器限制为给定的查询将返回的对象的数量。 这是为了防止拒绝服务攻击和网络超载。 要正确查询目录服务器,大型查询应分成多个较小的。 若要执行此操作的一种方法是通过一个称为页面的过程。 可通过 ADSI 的 OLEDB 提供程序分页时没有当前方法可用于从 SQL 分布式查询执行它。 这意味着可为查询返回的对象总数是服务器的限制。 在 Windows 2000 的活动目录中,默认服务器限制为 1,000 的对象。 下面的 MSDN 库主题下找不到页面的详细信息:
与 IDirectorySearch 分页
http://msdn.microsoft.com/en-us/library/aa746414(VS.85).aspx
有关如何通过使用 NTDSUtil 修改服务器限制为 maxPageSize 的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
315071如何查看和使用 Ntdsutil.exe 在 Active Directory 中设置 LDAP 策略

参考

有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
187529如何使用 ADO 来访问对象通过 ADSI LDAP 提供程序
在下面的 Microsoft 网站都可以找到有关的详细信息平台 SDK ADSI 中找不到包括一个示例的进一步信息:
http://www.microsoft.com/downloads/details.aspx?FamilyId=149187AC-7008-4F49-A00A-26DCEBE0FC32&displaylang=en

上面的链接也有从何处获取的各种 Windows sdk 底部的页的标题为该 sectiont 下下载有关的信息:"什么其他人是否下载"。

属性

文章编号: 299410 - 最后修改: 2006年4月11日 - 修订: 5.5
这篇文章中的信息适用于:
  • Microsoft Active Directory Service Interfaces 2.5
  • Microsoft Active Directory Service Interfaces 2.5
  • Microsoft SQL Server 7.0 标准版
  • Microsoft SQL Server 2000 标准版
  • Microsoft Active Directory Service Interfaces 2.5
关键字:?
kbmt kbdswadsi2003swept kbinfo KB299410 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 299410
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com