SQLServer连接基础知识

来源:互联网 发布:南昌软件测试空间it 编辑:程序博客网 时间:2024/05/16 10:57
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

  引言

  该堆栈的顶部是API或对象库层。应用程序通过对象库公开的API函数或接口连接到Microsoft®。用于访问SQLServer的API示例包括ODBC和DB-Library。用于访问SQLServer的对象库示例包括OLEDB、ADO和。由于ADO最终使用OLEDB与服务器通信,因此Windows应用程序在与SQLServer通信时实际上只使用两个常用的对象库,即OLEDB和ADO。由于通过ADO或ADO.NET进行连接通常比通过ODBC进行连接更普遍(但SQLServer的查询分析器和企业管理器仍通过ODBC进行连接),因此本文将从ADO/OLEDB和ADO.NET的角度介绍SQLServer连接体系结构的客户端。如今,大多数应用程序均通过对象库(而非ODBC或类似API)连接到SQLServer。  

  ADO和OLEDB

  OLEDB客户端(也称作使用者)通过客户端提供程序与服务器以及其他后端程序进行通信。此提供程序是一组COM组件(一个或多个),用于将应用程序请求转换为网络进程间通信(IPC)请求。在使用SQLServer的情况下,最常用的OLEDB提供程序是SQLOLEDB,它是Microsoft为SQLServer提供的OLEDB提供程序。SQLOLEDB随附于SQLServer中,并作为Microsoft数据访问组件(MDAC)库的一部分安装。  

  为了使用ADO与SQLServer进行通信,应用程序首先使用Connection对象建立与服务器的连接。ADO的Connection对象接受一个连接字符串,该字符串指定要使用的OLEDB提供程序以及传递给它的参数。如果应用程序使用SQLOLEDB提供程序连接到SQLServer,则该字符串中将显示“SQLOLEDB”。  

  ADO应用程序还可以通过ODBC连接到SQLServer。为此,应用程序将使用适用于ODBC的OLEDB提供程序,并指定在其连接字符串中引用目标SQLServer的ODBC数据源。这种情况下,应用程序与OLEDB进行通信,同时ODBC的OLEDB提供程序调用相应的ODBCAPI,以便与SQLServer进行会话。  

  ADO.NET

  ADO.NET应用程序通常使用.NETDataProviderforSQLServer连接到SQLServer。该本机提供程序使ADO.NET对象能够与SQLServer直接进行通信。通常,应用程序使用SqlConnection对象建立连接,然后使用SqlCommand对象向服务器发送命令,并接收服务器返回的结果。SqlDataAdapter和SqlDataReader类通常与SqlCommand一起使用,以便通过托管的代码应用程序与SQLServer进行交互。  

  通过OleDbConnection类,ADO.NET应用程序还可以使用SQLOLEDBOLEDB提供程序与SQLServer进行交互。此外,它们可以通过OdbcConnection类使用ODBC访问SQLServer。因此,仅通过托管代码,您就有三种不同的方法从应用程序访问SQLServer。从故障排除的角度而言,了解这些方法是非常有用的,因为它可以帮助您将遇到的与连接相关的问题归结到特定的数据访问层或库。 

  客户端Net-Library

  该堆栈中的下一层是Net-Library。Net-Library在API或对象库(应用程序使用它与SQLServer进行通信)与网络(用于与网络交换数据)之间提供了一个通道。SQLServer为所有主要的网络协议提供了Net-Library。这些库以透明方式将客户端发出的请求发送到SQLServer,并将服务器发出的响应返回给客户端。可以使用SQLServer的客户端网络实用程序配置适用于特定客户端的Net-Library。支持的客户端协议包括TCP/IP、命名管道、NWLink、多协议(RPC)和其他一些协议。  

  尤其值得一提的Net-Library是共享内存Net-Library。顾名思义,该Net-Library使用Windows的共享内存功能在SQLServer客户端与服务器之间进行通信。显然,这意味着客户端与服务器必须位于同一台物理计算机上。  1

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>