连接sql server时,provider使用msdatashape有效率还是使用默认的sqlclient有效率?

gwolf 2009-02-20 11:40:10
连接2005时默认的是sqlclient,它们有什么区别,分别在什么情况下使用,如何查找它们的说明
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
五维思考 2009-02-20
  • 打赏
  • 举报
回复
学习
bdmh 2009-02-20
  • 打赏
  • 举报
回复
够详细,分享一下
de410 2009-02-20
  • 打赏
  • 举报
回复
第二个地址如下
http://support.microsoft.com/default.aspx?scid=kb;[LN];308045
de410 2009-02-20
  • 打赏
  • 举报
回复
1、关于 SqlClient
Microsoft 允许开发人员编写托管接口,直接解决了有关 OSFA 的问题。即 ADO.NET 公开了一个专用于 Microsoft SQL Server (SqlClient) 以及其他数据库(包括 Oracle 和 DB2)的 .NET 数据提供程序。这意味着,数据提供程序引擎能够利用 DBMS 的所有功能,并以最低的级别与数据库通讯。自 DBLibrary 以来,ADO.NET 第一次能够通过表格数据流 (TDS) — 它是低级协议,与 SQL Server 进行交互。这意味着,SqlClient 提供程序能够访问所有 SQL Server 功能,并了解这些功能之间的细微差别,从而使应用程序也就如虎添翼。对于开发人员而言,不存在将一种 DBMS 代码转换为另一种代码的问题,因为本地接口与 OleDb 和 Odbc .NET 数据提供程序实现的 .NET OSFA 接口类似。
http://msdn.microsoft.com/zh-cn/library/bb896309.aspx

2、关于 MSDataShape
ADO.NET 还公开 DBLibrary 的另一个功能 — 直接访问低级数据接口返回的数据流。这个接口在建立连接时以只进、一次一行的方式将您的代码链接到查询返回的输入数据,它作为 DataReader 实现。ADO.NET 中的所有方法都使用 DataReader 直接或在后台获取结果集。这意味着,应用程序能够更快地获取数据并更好地控制这个过程。
当您需要访问父级-子级和汇总数据时,可以使用分层记录集替代 JOIN 和 GROUP BY 语法。分层记录集用于许多产品:Xbase 产品使用 SET RELATION 命令,Microsoft Access 内部使用分段的虚拟表生成带有分组级别的报告等等。

分层记录集可通过 MSDataShape 提供程序获得,该提供程序由客户端游标引擎实现。层次结构使您可以构建一个或多个记录集、定义分组并指定子级记录集上的聚合计算。尽管您可以通过代码实现类似的功能,但使用此功能可将开发人员的大量例常工作交由系统来完成。

MSDataShape 提供程序是一种用于返回分层数据的专用提供程序。虽然 MSDataShape 提供程序在返回分层结果集方面格外有效,但它依赖于 SQL 的子集以及专用关键字和其他语法约定。另外,这个提供程序不能与 .NET SQL Server 数据提供程序一起使用。相反,您将被迫改为使用 OleDb .NET 数据提供程序 — 即使是在处理 SQL Server 数据库的时候。
http://support.microsoft.com/default.aspx?scid=kb;[LN];308045

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧