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 通讯,其它客户端系统则可能透过 TCP/IP 与 SQL Server 通讯。
________________________________________
译注
参考上例读者可以了解,该 SQL Server 必须同时安装命名管道和 TCP/IP,才能与用户端正常通讯。
________________________________________
SQL Server 2000 服务器网络公用程序
在伺服端系统上设定数种通讯协议是很常见的事。服务器预设安装的是命名管道与 TCP/IP 两种网络链接库。要在服务器上设定更多的网络链接库,可依下列步骤:
1. 从 开始 / 程序集 / Microsoft SQL Server 中,选择 服务器网络公用程序 ,显示 SQL Server网络公用程序 对话框,如图11-2。
图11-2 SQL Server网络公用程序对话框的「一般」卷标页
2. SQL Server网络公用程序 对话框有两个卷标页: 一般 及 通讯协议网络链接库 。 一般 标签页用来 启用 及 停用 网络通讯协议。启用的通讯协议会排列在右手边的清单内,SQL Server 会以其排列的顺序来尝试使用这些通讯协议。 一般 标签页允许下列操作:
o 要启用额外的通讯协议,先在 停用通讯协议 的清单中选取一个或多个通讯协议,然后按一下 启用 。
o 要停用通讯协议,先在 启用通讯协议 的清单中选取一个或多个通讯协议,然后按一下 停用 。
o 要修改启用通讯协议的属性,选取通讯协议名称然后按 属性 。
o 可经由 SSL(Secure Sockets Layer,安全通道层)来启用 强制通讯协议加密 。
o 可启用 WinSock proxy 支援。
通讯协议网络链接库 卷标页只用来显示信息。从这个标签页里,您可以看到最进一次更改的网络链接库的版本号码及更改日期,如图11-3。
图11-3 「SQL Server网络公用程序」对话框的「通讯协议网络链接库」卷标页
SQL Server 2000 客户端网络公用程序
网络联机的另一边是客户端系统,其设定方法与服务器端相当类似。要设定客户端系统,可于客户端系统执行下列步骤:
1. 从 开始 / 程序集 / Microsoft SQL Server 里,选择 客户端网络公用程序 ,显示 SQL Server客户端设定公用程序 对话框,如图11-4。其中大部分的功能跟 SQL Server网络公用程序 对话框一样,不过客户端公用程序提供更多的选项。
图11-4 「SQL Server 客户端设定公用程序」对话框的「一般」卷标页
SQL Server网络公用程序 对话框只是简单地列出了一些网络链接库及它们的联机参数,但在 SQL Server客户端设定公用程序 中您可以指定客户端预设启用的通讯协议及服务器别名。在 一般 标签页中,启用的通讯协议是依照其被使用的顺序来排列。以图11-4为例,启用通讯协议的顺序是 命名管道 、 TCP/IP 。因此,客户端在与服务器联机时会先尝试使用 命名管道 ,如果不成功,客户端会接着使用 TCP/IP 来与服务器联机。如果仍然无法联机,客户端会产生一个联机错误讯息。
服务器别名 允许您只使用一个指定的通讯协议,并忽略 启用通讯协议 清单的设定。当其所指定的通讯协议无法成功联机,客户端不会再尝试使用其它的通讯协议。如果您有多个服务器,而使用的并不是同一种常用的通讯协议,您应将最常用的通讯协议放在启用通讯协议清单的最上方。如此才可让您在建立联机时,尝试再联机的时间可以减到最低。
您可以简单的启用或停用通讯协议。要启用通讯协议,从 停用通讯协议 的清单中选取需要的通讯协议,然后按一下 启用 。要停用通讯协议,从 启用通讯协议 的清单中选取要停用通讯协议,然后按一下 停用 。
您可以修改启用通讯协议的属性,从 依下列顺序启用通讯协议 清单中点选通讯协议然后按 内容 。不过,默认值对大多数的网络来说已是最佳化的选择。
从 一般 标签页中,您也可启用 强制通讯协议加密 ,以保护透过网络传输的数据。这个选项只有在启用 多重通讯协议 才是可用的。
2. 要定义一个服务器别名,按一下 别名 标签页。这个标签页会列出任何已存在的服务器别名。要增加别名,按一下 新增 ,显示 新增网络链接库设定 对话框,如图11-5。
图11-5 「新增网络链接库设定」对话框
3. 在这个对话框中,您可以新增一台 SQL Server,并且指定其别名,以及该 SQL Server 使用您所指定的通讯协议。该通讯定必须已经在客户端设定完成,并且必须在这边指定以供该客户端使用该特定的通讯协议。当 SQL Server 客户端尝试使用别名联机时,将会使用该网络链接库以及您在此处设定的联机参数。除非您的应用程序尝试透过别名与服务器联机,否则将会使用预设的启用通讯协议。
4. 图11-6是 SQL Server客户端设定公用程序 的 数据链接库选项 卷标页。此卷标页显示 DB-LIB 的相关信息以及下列复选框: ANSI到OEM的自动转换 与 使用国际设定 。第一个选项让您在与 SQL Server 通讯时,启用数据链接库自动将字符集从 ANSI 转换至 OEM。第二个选项让您从系统取得日期,时间与货币格式,而不是使用硬件编码值。
图11-6 SQL Server 客户端设定公用程序的「数据链接库选项」卷标页
5. SQL Server客户端设定公用程序 也包括了一个 网络链接库 卷标页,如图11-7。与 SQL Server网络公用程序 的 网络链接库 卷标页一样,此卷标页仅显示可用的网络链接库及其版本号码。
当客户端系统上网络链接库的顺序设定不当时,就有可能发生许多联机问题。在您遇到联机问题的时候,请先检查网络链接库的设定。
图11-7 SQL Server 客户端设定公用程序的「网络链接库」卷标页
SQL Server 网络链接库与通讯协议
之前已经提到,SQL Server 支持以下几种网络链接库: 命名管道 (Named pipes)、TCP/IP、 多重通讯协议 (Multiprotocol)、NWLink IPX/SPX、AppleTalk 以及 Banyan VINES。每种网络链接库对应一个或一组不同的通讯协议。本节将简单介绍每种网络链接库。
在您的 SQL Server 上使用的网络通讯协议可能决定于企业标准或之前已经存在的系统。所有 SQL Server 命令与函数都支持全部的网络通讯协议,不过有些通讯协议的速度会比其它的要快一些。此外,有些通讯协议支持路由及名称服务,有些则不支持。
命名管道
Microsoft 在几年以前开发了命名管道通讯协议。命名管道支持两种模式:本机和远程。当客户端和服务器端在同一个系统中时,使用本机命名管道。当客户端和服务器端不在同一个系统中时,则使用远程命名管道。经由命名管道建立联机时,SQL Server 网络公用程序会决定使用本机命名管道或远程命名管道。
命名管道是预设的客户端通讯协议,也是 Windows NT 4.0 Server 和 Windows 2000 系统中预设的网络通讯协议。在 Windows95/98 系统中没有命名管道。在这些系统中,服务器端的网络链接库是 TCP/IP、多重通讯协议和共享内存。尽管命名管道是一个很好的协议,但通常不用于大型网络,因为它不支持路由和网关器。比起其它的通讯协议,例如 TCP/IP,命名管道需要更多服务器端与客户端的互动性。
TCP/IP
TCP/IP 是最常用的网络通讯协议,因为它能于多种平台上运作,并已经被公认为网络标准,而且运作速度快。它也是 Internet 使用的网络协议。TCP/IP 网络链接库是 SQL Server 网络链接库中效能最高的其中之一。TCP/IP 丰富的特色使它成为网络链接库中一个不错的选择。
Multiprotocol
多重通讯协议是 SQL Server 7.0 所新增而保留至 SQL Server 2000。该网络链接库实际上是几个网络链接库的组合。因此,它的效率不如单独的特定网络链接库,但它提供更大的弹性。多重通讯协议网络链接库支持 TCP/IP、NWLink IPX/SPX 以及命名管道。使用多重通讯协议网络链接库时,第一个使用的是客户端和服务器端均有的常用通讯协议。如果客户端连结到运作不同通讯协议的服务器上,多重通讯协议是一个理想的选择。
NWLink IPX/SPX
当您将 SQL Server 2000 系统整合到 NetWare 网络中时,NWLink IPX/SPX是一个理想的通讯协议,因为它的运作可以完美的整合。IPX/SPX 已经存在一段很长的时间,并且是高效能和稳定的网络链接库。
AppleTalk
AppleTalk 是 Apple Computers 开发的网络协议,用于 Apple 系统。Windows NT 和 Windows 2000 支持 AppleTalk,并允许 Windows NT 和 Windows 2000 服务器端能整合到 AppleTalk 环境的客户端。
Banyan VINES
Banyan VINES 网络链接库用于使用 VINES 的网络系统,允许将 Windows 客户端和服务器端与 VINES 环境整合。
VIA(Virtual Interface Architecture,虚拟接口架构)
此通讯协议来自两个新趋势:Giganet 与 ServerNet II。它对丛集服务器来说是很好的选择。
选择网络链接库
您所选择的网络链接库依您使用的网络通讯协议而定。当服务器端和客户端的网络链接库不同步时,常常会发生联机问题。如果您不能与服务器联机,请检查两端的网络链接库定义。另外,使用另一个程序,例如 Ping 或 Microsoft Windows Explorer,来判断问题是与 SQL Server 还是与网络本身有关。
网络组件与 SQL Server 效能
网络分成两层:软件层(包含网络通讯协议)和硬件层。以本书而言,硬件层包括必须的软件驱动程序来驱动硬件。各层之间相互独立,并且每一层可以有一个或多个组件。例如,可能在相同的网络卡上同时运作 TCP/IP 和 IPX/SPX,或者使用相同的协议来运作不同的网络卡。此结构如图11-8。
图11-8 网络层级
每一个网络层级都有自己的特色和效能考虑。如上所述,选择网络协议或网络硬件组件有不同的理由;通常,选择是基于商业原则和网络如何与别的系统连接而进行。本书并不想指定您一定要使用特定的协议或网络硬件。在本节,我们将从软件和硬件的角度介绍影响 SQL Server 功能和效能的因素。
软件层-网络协议
如上所述,网络协议包括命名管道、TCP/IP、NWLink IPX/SPX、AppleTalk 和Banyan VINES。基本上,所有的网络通讯协议与 SQL Server 的相关部分有相同的运作方式。如果出现引起功能性或运作上的网络问题,绝大多数发生在硬件层。另一方面,联机问题也常常发生在网络链接库层或网络通讯协议层。如果您在连结 SQL Server 客户端到 SQL Server 2000 服务器系统时出现了问题,试一试别的方式。例如,使用 Windows Explorer。如果您能透过 Explorer 连结到系统,但不能使用 SQL Server,那么您的问题可能与 SQL Server 有关。请确定您尝试联机所使用的是适当的网络通讯协议。如果设定使用的是多重通讯协议,有时很难正确地指出您正在使用哪一个通讯协议。如果您能透过 Ping、Internet Explorer 或其它的外部程序来与服务器联机,那么问题很可能发生在选择了不当的网络链接库。
无论您使用哪一个网络协议,在硬件层都会出现许多运作问题。如果在网络限制的范围内设定系统,以后碰到的问题将大大减少。
硬件层
您必须对硬件层有所了解才能判断是否发生了网络运作问题。实体硬件层和通讯协议层是各自独立的,亦即在不同的硬件网络装置上可以使用各种不同的网络通讯协议。您所选择的网络硬件决定了网络的效能,网络能处理的流量依网络的类型和速度而定。
网络频宽
网络频宽 是指在一定的时间内透过网络传输的数据量。网络频宽有时以网络硬件名称来定义,例如 10baseT 或 100baseT,表示 10-Mbit/sec 或 100-Mbps。
然而,网络传输量的测量有时并不准确。在绝大多数的网络硬件中,当传输规模减小时,网络卡能传输的数据量也会减少,因为每一次网络传输的负荷是一定的。例如,传输 64 KB 数据所需要的负荷大约与传输 2KB 数据需要的负荷相同。RDBMS(包括 SQL Server)经常处理少量数据的传输。因此,您的服务器能处理的数据量将可能少于网络硬件的频宽。
以太网络
尽管有许多种选择,但最常见的网络硬件仍可能是以太网络。最近几年,以太网络的速度大大地增加,并且在未来将持续上升。Xerox、DEC 和 Intel 在1976年开发了以太网络。早期使用的是同轴电缆,以太网络的频宽为3 Mbps。在 10baseT 技术问世后,网络频宽增加到 10 Mbps。随后 100baseT 技术使网络频宽增加到 100 Mbps。不久的将来,当 Gigabit 以太网络成熟后,网络频宽将可增加到 1-Gbps。下面列出了各种频宽之间的比较。
网络类型 频宽
同轴电缆以太网络 3 Mbps
10BaseT 10 Mbps
100BaseT 100 Mbps
Gigabit以太网络 1000 Mbps
虽然以太网络的频宽狂飙猛涨,但以太网络仍有一些问题:多个以太网络卡可能会同时传输数据,而两个或多个网络卡若正好同时传输数据,就会发生 碰撞 (collision)。发生碰撞的每个网络卡将会等待一段时间,然后试着重新传输数据。尽管时间很短,但它会不断累加。发生的碰撞越多,等待重新传输的时间也越长。
网络流量增加时,碰撞发生的机率也会增加。如果流量已接近网络的容量,发生碰撞的机率将会陡升,如图11-9所示。碰撞的发生会导致效能的降低。因此,监控网络流量并注意碰撞是非常重要的事。例如,您可以遵循一个概略的法则:传输流量不要超过网络频宽的 75%。当然,在尖峰时刻会超过此值,但不应超过此值太长的时间。
图11-9 碰撞机率与网络使用率的比较
记号环
记号环网络透过记号传递的机制,使环中的每一个成员都有机会与别的成员通讯。记号每次仅允许网络中的一个系统进行数据传输。由于这种体系结构,您可以利用网络的整个频宽,而不会在通讯中引起过度的延迟时间。
记号环网络像以太网络一样,不同的技术提供了不同的网络频宽,如下表所示。但由于记号环网络是一连串的点对点联机,不会发生碰撞,因此几乎能使用整个频宽。如同以太网络技术,记号环网络技术也在持续不断地改进。
网络类型 频宽
IEEE 802.3 记号环 1, 4, or 16 Mbps
IEEE 802.5 100 Mbps
Gigabit 记号环 1000 Mbps
还有许多别的网络硬件可供选择,包括ATM及光纤等。
网络监控
例如我们之前所看到的,使用的网络硬件类型和速度可能会影响数据库系统的整体效能。如果超过了网络频宽,数据传输就会出现瓶颈而使得传输发生延迟。延迟则会降低整个系统的效能。
您可以安装的硬件为基础来推算一下网络的最大效能,并可对效能问题的症结有个概念。使用这份信息,通常您只要新增网络卡就能解决问题。寻找网络问题的首要步骤是周期性地监控网络,您可以使用收集的数据来判断是否有网络问题,进而发展可行的解决方案。
监控效能
监控网络不如想象中容易。通常需要购买额外的网络监控硬件或软件才能有效地监控网络。下面讨论的几个因素,可让您判断是否有必要购置这些监控设备。
首先,在您实体网络上所有的数据库服务器端和客户端并不一定使用相同的通讯协议。例如,在以太网络上执行 TCP/IP 的系统实际上只能(在操作系统层级上)看到 TCP/IP 的流量,IPX/SPX 封包将在装置驱动程序层上被过滤掉。通常,网络监控软件需要自订的装置驱动程序和网络层级。
再者,网络卡将过滤掉不适合您特定机器的数据;因此,不是所有的网络数据都会被传输到驱动程序或操作系统。为观察所有的网络活动,应该使用自订的装置驱动程序和网络层级。如果不作修改,一般的工作站就不能监控实体网络上所有的流量。
安装了网络监控硬件、软件或两者都安装之后,您就能清楚地了解您的网络处理的传输流量。此流量可能导因于您的系统,但有时也可能是由路由或设定问题所引起的网络流量。网络硬件问题的疑难排解已在本书的范围之外。安装了网络监控系统之后,我们来检查下面各项:
• 利用率 透过网络传输的数据量是多少?这个数据量与网络硬件的最大频宽相比如何?
• 封包大小 网络传输的封包有多大?是大型封包效率较高,还是小型封包呢?
• 碰撞(如果发生) 正在发生大量的碰撞吗?如果是,为什么?
• 错误 是否有很多未完成的传输需要重传?这可能是有问题的网络卡或连接装置的警示。
判断是否有问题
在您搜集了相关的效能信息之后,您必须判断网络是否有问题,这并不容易。网络效能问题通常不会显示出错误讯息,而直接使整体效能降低。为了判断是否有问题发生,您应该比较由监控得到的数据与原先提供的设定信息。
不要超过网络频宽的 75% 是一个好办法。如果大多数的网络传输量都很小,您可能想进一步减少传输量的百分比,因为大量的小型传输比少量的大型传输量需要更多的负荷。在以太网络中,减少传输次数也会减少碰撞,因此降低了网络请求的响应时间,使整个网络加快。
有些问题也许比频宽问题更严重。您应该检查高比率的碰撞和错误。如果您在75% 的临界值附近,而且碰撞很多,那么您可能已经接近网络的瓶颈。相对地,如果网络流量小而碰撞又很多,您很可能有硬件的错误发生。
您也应该检查传输错误,传输错误暗示着硬件可能有问题。有问题的硬件可能是网络中的任何部分,从网络卡、电缆、路由器或桥接器等等。一旦确定有问题,就应该请教网络专家。
找出网络问题的解决方案
根据特定的情况,有几种方法来解决频宽问题。您可以购买更多或不同的硬件,将网络分段,甚至重新设计应用程序等。
一种减少网络使用百分比的方法是增加频宽。从 10 baseT 升级到 100 baseT 可以增加十倍的频宽。这个方法很简单,而且容易,但它很昂贵。可以试试其它的替换办法。
如果网络流量太大,就应该以部门或工作群组为基础,把网络分成若干个子网络。透过子网络,您可以在每一个办公室或部门建立自己的网络,而不是整个公司都在同一个网络上。这个方法可以降低单一网络上的系统数量,因此可减少流量。有时候是网络已经变慢一段时间了,但在发生问题之前您一直未曾注意到增加的流量。对于减少网络壅塞的问题,使用子网络或许是最好的办法。
另一个解决办法是从功能的角度来观察网络的使用情况。网络是否合理地使用呢?应用程序是否传回了太多的数据?检查一下 SQL Server 客户端程序,确保它们没有请求多于需要的数据列。如果使用者很多,那么使用目标明确的查询,传回最少数据列数的数据以减少网络流量是最简单的方法。
如您所见,可能有各式各样的问题,也有各种不同的解决方案。不要担心这些可能出现的问题。应用程序的逻辑错误有时会显示成网络频宽的问题,排程也可能会出现问题,例如,不要在一天中最忙的时候备份网络。
本章总结
在本章中,学习了 SQL Server 网络的基本概念以及如何设定网络上的 SQL Server。了解了 SQL Server 使用的分层系统,从 API 到网络链接库、网络协议,最后是网络硬件。这些层级彼此相互独立,但它们透过各种设定组合在一起。在选择 API、网络链接库、网络协议,甚至网络硬件时,有很大的弹性。记住在发生运作问题之前,定期检查网络流量以避免运作问题发生。我们将在 第36章 讨论一般的运作问题;在 第12章 ,我们将转换主题:学习如何使用 Microsoft Cluster Server Services 来设定 SQL Server 以获得高效能的系统。