SQL Server网络通信架构


下列组件按下面的顺序管理 SQL Server 2000 与其客户端之间的通讯:

  1. 客户端应用程序调用 OLE DB、ODBC、DB-Library 或嵌入式 SQL API。这将使 OLE DB 提供程序、ODBC 驱动程序或 DB-Library DLL用于 SQL Server 通讯。
  2. OLE DB 提供程序、ODBC 驱动程序或 DB-Library DLL 调用客户端 Net-Library。客户端 Net-Library 调用 IPC API。
  3. 通过基础 IPC 将客户端对 IPC API 的调用传输给服务器 Net-Library。如果是本地 IPC,将使用 Windows 操作 IPC(例如共享内存或本地命名管道)传输调用。如果是网络 IPC,客户端的网络协议栈将通过网络与服务器上的网络协议栈通讯。
  4. 服务器 Net-Library 将来自客户端的请求传递给 SQL Server 2000 实例。

SQL Server 2000 按相反的顺序答复客户端。

下图显示当 SQL Server 应用程序在装有 SQL Server 实例的同一台计算机上运行时的通讯路径。



sql server的体系结构的分析服务 sql server数据库架构_服务器

这是在 SQL Server 应用程序通过 LAN 或 WAN 连接到另一台计算机上的 SQL Server 2000 实例时的简化通讯路径图示。虽然图中显示了使用特定 Net-Library 的用于 SQL Server 2000 的 OLE DB 提供程序、SQL Server ODBC 驱动程序和DB-Library DLL,但对这些组件连接这些 Net-Library 没有任何限制。这些提供程序、驱动程序和 DB-Library 每个都可以使用任何的 SQL Server Net-Library。



sql server的体系结构的分析服务 sql server数据库架构_服务器_02

SQL Server 2000 将 Net-Library 分为主 Net-Library 和次 Net-Library。用于 SQL Server 2000 的 OLE DB 提供程序、SQL Server 2000 ODBC 驱动程序、DB-Library DLL 和数据库引擎只能直接与以下两个主 Net-Library 通信:

  • 默认情况下,应用程序与同一计算机上的 SQL Server 2000 实例之间的本地连接使用共享内存主 Net-Library。该路径见上面的图示。
  • 计算机间连接通过超级套接字主 Net-Library 通讯。超级套接字 Net-Library 有两条通讯路径:
  • 若选择 TCP/IP 套接字连接或 NWLINK IPX/SPX 连接,超级套接字 Net-Library 直接为应用程序和 SQL Server 2000 实例间的通讯调用 Windows 套接字 2 API。
  • 如果选择命名管道、虚拟接口构架 (VIA) SAN、多协议、AppleTalk 或 Banyan VINES 连接,则超级套接字 Net-Library 的子组件(称为 Net-Library 路由器)将为选择的协议装载次 Net-Library,并将所有的 Net-Library 调用路由到该 Net-Library。

下图更详细地显示了运行 SQL Server 2000 客户端组件的计算机和运行 SQL Server 2000 实例的计算机之间的网络连接,通过客户端和服务器 Net-Library 通讯的路径。



sql server的体系结构的分析服务 sql server数据库架构_microsoft_03

sql server的体系结构的分析服务 sql server数据库架构_服务器_04

服务器超级套接字 Net-Library 作为 Ssnetlib.dll 实现,而客户端超级套接字 Net-Library 作为 Dbnetlib.dll 实现。

下表显示 Net-Library 如何与 IPC API 及用于连接的协议相关。

网络实用工具中指定的协议


使用的客户端 Net-Library


使用的服务器 Net-Library

Net-Library 调用的 IPC API


支持 IPC API 的协议

TCP/IP 套接字

Dbnetlib.dll

Ssnetlib.dll

Windows 套接字 2

TCP/IP

命名管道

Dbnetlib.dll 路由至 Dbnmpntw.dll

Ssnetlib.dll 路由至 Ssnmpn70.dll(仅限于 Microsoft Windows NT® 和 Windows® 2000)

Windows 命名管道

文件系统(本地)
TCP/IP
NetBEUI
NWLink

NWLink IPX/SPX

Dbnetlib.dll

Ssnetlib.dll

Windows 套接字 2

NWLink

VIA ServerNet II SAN

Dbnetlib.dll 路由至 Dbmssnet.dll(仅限于 Microsoft Windows NT 和 Windows 2000)

Ssnetlib.dll 路由至 Dbmssnet.dll(仅限于 Microsoft Windows NT 和 Windows 2000)

虚拟接口构架 (VIA)

虚拟接口构架 (VIA)

VIA GigaNet SAN

Dbnetlib.dll 路由至 Dbmsgnet.dll(仅限于 Microsoft Windows NT 和 Windows 2000)

Ssnetlib.dll 路由至 Dbmsgnet.dll(仅限于 Microsoft Windows NT 和 Windows 2000)

虚拟接口构架 (VIA)

虚拟接口构架 (VIA)

多协议

Dbnetlib.dll 路由至 Dbmsrpcn.dll

Ssnetlib.dll 路由至 Ssmsrpc.dll(仅限于默认实例)

Windows RPC

文件系统(本地)
TCP/IP
NetBEUI
NWLink

AppleTalk

Dbnetlib.dll 路由至 Dbmsadsn.dll

Ssnetlib.dll 路由至 Ssmsad70.dll(仅限于默认实例)

AppleTalk ADSP

AppleTalk

Banyan Vines

Dbnetlib.dll 路由至 Dbmsvinn.dll

Ssnetlib.dll 路由至 Ssmsvi70.dll(仅限于默认实例)

Banyan VINES SPP

Banyan VINES

 

在 Microsoft Windows® 98 上运行的 SQL Server 2000 实例不支持服务器命名管道和 Banyan VINES Net-Library,因为 Windows 98 操作系统不支持这些 API 的服务器部分。SQL Server 2000 在 Windows 98 上支持这些 Net-Library 的客户端部分;因此,在 Windows 98 上运行的应用程序可使用 Net-Library 连接到 Microsoft Windows NT 或 Microsoft Windows 2000 上的 SQL Server 实例。在 Microsoft Windows 98 上运行的应用程序也可使用这些 Net-Library 建立连接。

AppleTalk Net-Library 不在运行 Windows 95 或 Windows 98 的计算机上运行。

VIA 网络旨在使位于同一数据中心的服务器之间实现高水平的消息传递流量,比如在一个作为一台或多台 Internet Information 服务应用程序服务器实现的 Web 站点内,其中的每台服务器连接到一台或多台运行 SQL Server 的数据库服务器。VIA 网络并不用于连接个别的工作站。客户端和服务器 SQL Server VIA Net-Library 都只受 Windows NT Server、Windows NT Advanced Server、Windows 2000 Server、Windows 2000 Advanced Server 和 Windows 2000 Data Center 的支持。

SQL Server 2000 的命名实例仅支持命名管道、TCP/IP 套接字、NWLink IPX/SPX 和共享内存 Net-Library。命名实例不支持多协议、AppleTalk 或 Banyan VINES Net-Library。为了保持与 SQL Server 早期版本的兼容性,默认实例支持所有的服务器 Net-Library。

一些 Net-Library 只支持一种类型的协议栈。例如,AppleTalk Net-Library 需要 AppleTalk 协议栈。其它的 Net-Library,如命名管道和多协议 Net-Library 可支持多个协议栈。

Microsoft SQL Server Net-Library 已针对 Microsoft 协议栈做了大量的测试,并得到这些协议栈的支持。如果其它供应商的协议栈完全支持 Microsoft SQL Server Net-Library 所使用的 API,这些协议栈也应该有效。

使用命名管道或多协议 Net-Library 将应用程序连接到同一台计算机上的 SQL Server 实例时,如果这台计算机没有协议栈,IPC API 将由文件系统实现。