11. Microsoft SQL Server 的网络设定
网络服务概观
SQL Server 应用程序接口
网络链接库
网络组件与 SQL Server 效能
网络监控
本章总结
在您安装了 Microsoft SQL Server 之后,您必须设定其网络相关设定。到现在为止,您或是您的 Microsoft Windows NT 或 Windows 2000 系统管理员可能已经设定了需要的网络通讯协议。如果还没有设定的话,您可以简单的利用控制台来设定网络通讯协议。您所选择的通讯协议通常是根据公司的原则或网络上已经设定的其它系统来决定。尽管不同的通讯协议之间,在效能和功能性上存在一些差异,但是绝大部分都能满足您的需求。
在本章中,您会学习如何设定 SQL Server 中的各种组件,包括网络硬件层、网络协议层和 SQL Server 网络链接库层。此外,还将介绍数据库的连接组件,例如 DB-LIB、Open Database Connectivity(ODBC)及 ODBC 联机集区(ODBC connection-pooling)功能,并且判断 SQL Server 是否存在网络联机的瓶颈。
网络服务概观
SQL Server 客户端和服务器端的通讯需要多种的软件和硬件层。让我们简要的看一下这些层级;它们的功能在本章稍后将有更详尽的说明。
顶层是 SQL Server 应用程序开发接口(Application Programming Interface,API)。API层由下面其中一种服务来构成:
• DB-LIB(旧式的 SQL Server API)
• ODBC(能连接 SQL Server 或其它数据库产品)
• OLE DB(ActiveX 程序设计师使用)
• ODS(Open Data Service)
API 位于网络链接库的顶层,网络链接库通常简写为 net-library 或 net-libs 。网络链接库可将 SQL Server 指令和数据转译成系统呼叫,由系统呼叫与网络协议层进行通讯。网络链接库是 SQL Server 组件,而网络协议层是操作系统组件。您可从下列清单中选择一或多个网络链接库:
• 命名管道(Named pipes)
• TCP/IP
• 多重通讯协议(Multiprotocol)
• NWLink IPX/SPX
• AppleTalk
• Banyan VINES
网络链接库层可以包含一个以上的网络链接库,网络协议层也可包含一个以上的网络通讯协议,并且每个网络链接库与一个或多个网络协议通讯。网络协议层是使用网络协议语言的操作系统组件。SQL Server 的呼叫请求与数据被封装在网络呼叫中,如此才能透过网络在协议层上传送。除了 多重通讯协议 (multiprotocol)之外,每种网络通讯协议支持特定的网络链接库。多重通讯协议选项使用 Windows 2000 与 Windows NT 的 远程过程调用 (remote procedure call,RPC)功能。它同时支持 TPC/IP 通讯端、NWLink IPX/SPX,以及命名管道。
对于 Windows NT 或 Windows 2000 服务器来说,同时使用几种不同的网络通讯协议是相当常见的。这些通讯协议将在本章稍后的 〈网络链接库〉 一节里有更详细的说明。
通讯底层由网络硬件和驱动装置组成。该层通常是独立于网络协议层,但仍存在着一些相关性。例如,某些装置仅支持某组特定的网络通讯协议。可用的网络技术很多,且新技术也正在不断的被开发出来。网络硬件层由许多不同的技术组成,包括以下的内容:
• 以太网络(Ethernet)
• 记号环(Token ring)
• 异步传输模式(Asynchronous Transfer Mode,ATM)
• 光纤技术(Fiber optics)
• 调制解调器(Modem)
这些通讯层同时位于客户端和伺服端,如图11-1所示。如您所见,从 ODBC 呼叫到实际的传输需要很多的处理步骤。在本章中,我们不仅要介绍各种通讯层如何运作,也会讨论疑难排除等相关问题。
图11-1 SQL Server通讯层
SQL Server 应用程序接口
要与 SQL Server 通讯,您的应用程序必须使用 SQL Server 语言。其中一种方法是使用 SQL Server 提供的工具,诸如命令列的 OSQL 或 SQL Server Query Analyzer(ISQLW)。这些工具对于简单查询是很有用的,但对于日常的应用程序却无能为力。例如,对于存货处理、应付帐款和应收帐款,使用 GUI 程序就比键入很长的 SQL 陈述式效率更高。事实上,绝大多数这种应用程序的使用者都不知道 SQL 语言。通常,开发人员是使用 API 编写可与 SQL Server 连接的应用程序。API 提供能执行很多数据库功能的呼叫。
SQL 提供几种 API,包括 DB-LIB、ODBC 及 OLE DB。DB-LIB 是最原始的SQL Server API,它在 Microsoft SQL Server 与 Sybase 产品中都可使用。而 ODBC 是较新、也较具弹性的语言,可用来与各种关系型数据库管理系统(RDBMS)的产品通讯。程序设计师也可利用 OLE DB 和其它的 API 来使用 SQL Server。本节将说明各种不同的 API。
DB-LIB 连结
自从 DB-LIB 在1988年首次公布,就已经成为 SQL Server 的一部分,它也是SQL Server 程序最原始的 API。尽管 DB-LIB 已经成为 SQL Server 的固有部分,但 ODBC 却逐渐成为最主要的 API。C 与 C++ 语言以及 Microsoft Visual Basic 都支持 DB-LIB。DB-LIB 呼叫由应用程序代码产生,然后透过网络链接库传输到网络协议层,然后到网络硬件层。
ODBC 连结
ODBC 是 Microsoft 开发的标准 API,用来便于 Windows PC 与各种不同的RDBMS 连接。透过 ODBC API 的程序,您可以使用相同的应用程序与多种不同的系统通讯。尽管 ODBC 是通用的,但它不见得对所有的 RDBMS 都是最有效率的 API。通常,对特定的 RDBMS 使用其内建的 API 会支持许多额外的功能,并且能最佳化。
透过在因特网上使用 动态服务器网页 (Active Server Page,ASP),ODBC可用来支持其它的连接。支持包括 ActiveX 和 Microsoft Foundation Classes (MFC)以及 延伸标记语言 (Extensible Markup Language,XML)。在最近几年中,ODBC 的支持层级急速增加,使得它成为支持多种 RDBMS 的 API。
不管您要连接的 RDBMS 是什么系统,ODBC API 都有相同的形式,但是 ODBC 驱动程序就各有不同。对于每一个您要使用的 RDBMS,必须有一个唯一的 ODBC 驱动程序。此驱动程序把 ODBC 转换成本机的 RDBMS 网络协议。更新版本的 RDBMS 通常都需要一个新的 ODBC 驱动程序以使功能最佳化,但两个版本之间经常有兼容性问题。因此,DB-LIB 通常使用一个特定的网络链接库,而 ODBC 则使用多种协议的网络链接库。网络链接库有利于 ODBC 应用程序与服务器的连接,而不需要选择特定的协议。
ODBC 联机集区
在应用程序中共享联机的能力是由 ODBC 2.x 开始的。通常,每当一个不同的使用者登入应用程序时,应用程序将建立一个从应用程序层到数据库的额外联机。由于建立与维护这些连结到数据库的联机会占用不少系统资源,因此这一过程的效率就变得很低。
一个联机集区应用程序中其它的执行绪使用现存的ODBC联机,而不需要一个不同的联机。这个功能对于需要重复连结的 Internet 应用程序特别有用。若应用程序需要联机集区,则在启动时必须注册该应用程序本身。
当应用程序要求一个 ODBC 联机时,ODBC Connection Manager 会决定是使用新的联机还是已经存在的联机。应用程序并不知道这个决定,执行绪将继续依照平常的方式工作。
一旦执行绪完成了 ODBC 连结,应用程序就会产生一个释放连结的呼叫,这时,ODBC Connection Manager 将再度控管连结。如果连结在一定的时间内处于闲置状态,它就会被关闭。
________________________________________
相关信息
有关 ODBC 联机集区的其它信息,请参看 Microsoft ODBC Software Development Kit(SDK)。
________________________________________
其它API
您也可以使用其它的 API 来与 SQL Server 通讯。这些 API 包括 OLE DB、ODS(Open Data Serves,开放式数据服务)和其它诸如 SQL-DMF(SQL Distributed Management Framework,SQL分布式管理架构)、SQL-DMO(SQL Distributed Management Objects,SQL分布式管理对象)和 SQL-NS(SQL Namespace,SQL名称空间)。通常,每一种协议支持一个特定的功能或占一定的市场比例,并且都需要自订的程序接口。
________________________________________
相关信息
有关这些专门的API的相关讯息,请参考 SQL Server 2000 在线丛书。
________________________________________
网络链接库
SQL Server 网络链接库层,将 API 呼叫转换成特定协议的呼叫,然后传输到网络协议层。网络链接库层在客户端使用 客户端网络公用程序(Client Network Utility) 来设定,在服务器端则使用 服务器网络公用程序(Server Network Utility) 。使用这些工具就能设定服务器端的一个或多个 SQL Server 网络链接库,或是客户端系统的一个网络链接库。客户端设定的网络链接库和服务器端的相同,SQL Server 才能正常通讯。单一的网络可以同时容纳数种通讯协议。举例来说,同一个网络上,某些客户端系统可能透过命名管道与 SQL Server 通讯,其它客户端系统则可能透过