2.2 网络协议配置

要实现多个服务器的使用,进行分布式查询,或者通过本地计算机管理别的远程主机上的服务器,再或者要在远程计算机上实现针对本地服务器的管理工作,就必须实现同一个网络上两个SQL Server服务器之间的相互通信。为此,首先必须保证本地计算机(客户机)和远程服务器端(服务器)的网络连接设备的连通,如网线的畅通、网卡的正确安装等,其次是服务器的启动服务账户必须是域用账户,最后是两端之间网络库的正确配置。如果网线网卡有问题,可参看相关文献解决。启动服务账户前面已经介绍,下面主要介绍服务器和客户端网络库的正确配置

2.2.1 SQL Server通信结构

1.SQL Server通信方式

SQL Server 2005使用进程间通信机制实现客户端应用程序和SQL Server服务器之间的通信。当客户端和服务器在同一台计算机上时,客户端应用程序和服务器使用本地命名管道(Named Pipes)进行通信;当客户端应用程序和服务器运行在不同的计算机上时,也即客户端使用远程服务器时,二者则使用网络进程进行通信。网络进程由以下两部分组成。

  • API(应用程序接口):它是一组函数,应用程序使用它向进程发送请求,并从进程检索结果。
  • 协议:定义两个进程通信间所传递的信息格式。

一些API能够基于多种协议,如TCP/IP等。这些通信协议称为网络库,它们是一种比较高层的数据交换协议,用于在运行SQL Server的客户端和服务器之间传递网络数据包。

2.客户端和服务器通信实现过程

客户端调用数据库应用编程接口(API,如OLE DB、ODBC、DB-Library)封装SQL请求到数据流包(TDS)。数据流包是SQL Server认识的数据格式。

客户端网络库将数据流包封装进网络包,并调用进程通信API向服务器传递客户请求。在传递过程中,如果是本地进程通信,则使用共享内存或本地命名管道;如果是网络进程通信,则客户端网络协议栈通过网络连接与服务器端网络协议栈进行通信。服务器端网络库从客户端传来的网络包中解出数据流包送给SQL Server数据库,处理用户的请求。操作完成后,SQL Server将结果集打包到数据流包中,并利用服务器网络库将数据流包封装进网络包,返回给客户端应用程序。

服务器端可以有多个网络库,可以同时监听多个客户请求。客户端可以从多个安装的网络库中选取一个作为服务器端通信的默认网络库。

为保证客户和服务的正常通信:

·客户端网络库必须是服务端网络库之一。

·客户与服务端的网络协议必须一致。

2.2.2 配置服务器端网络协议

使用SQL Server配置管理器,可以配置服务器和客户端网络协议以及连接选项。如果用户需要重新配置服务器连接,以使SQL Server侦听特定的网络协议、端口或管道,则可以使用SQL Server配置管理器。

1.使用SQL Server配置管理器启用要使用的协议

在使用SQL Server数据库时,用户可以根据需要使用不同的网络协议。通过SQL Server配置管理器可以实现选择何种网络协议。

(1)选择“开始|程序|Microsoft SQL Server 2005|配置工具|SQL Server配置管理器”命令,打开“SQL Server配置管理器”窗口。

(2)在“SQL Server配置管理器”窗口中,展开“SQL Server 2005网络配置”结点。

(3)在控制台窗格中,单击“<实例名>的协议”,本例中选择“MSSQLSERVER的协议”。

(4)在细节窗格中,右击要更改的协议,在弹出的快捷菜单中选择“启用”或“禁用”命令,即可完成对该协议的配置操作。

注意:完成所有这些网络协议的配置后,必须重新启动数据库实例引擎,使修改的配置生效。

2.为数据库引擎分配TCP/IP端口号

使用“SQL Server配置管理器”为数据库引擎分配TCP/IP端口号,具体操作步骤如下。

(1)选择“开始|程序|Microsoft SQL Server 2005|配置工具|SQL Server配置管理器”命令,打开“SQL Server配置管理器”窗口。

(2)在“SQL Server配置管理器”窗口中,展开“SQL Server 2005网络配置”结点。

(3)在控制台窗格中,单击“<实例名>的协议”,本例中选择“MSSQLSERVER的协议”。

(4)在细节窗格中,右击“TCP/IP”协议,在弹出的快捷菜单中选择“属性”命令,打开“TCP/IP属性”对话框,并切换到“IP地址”选项卡。

(5)在“IP地址”选项卡上,显示了若干IP地址,格式为IP1、IP2,直到IPALL。这些IP地址中,有一个是用做本地主机的IP地址(127.0.0.1),其他IP地址是计算机上的各个IP地址。

如果“TCP动态端口”选项框中包含0,则表示数据库引擎正在侦听动态端口,请删除0。在“TCP端口”框中,输入希望此IP地址侦听的端口号。SQL Server数据库引擎默认的端口号为1433。

(6)单击“确定”按钮,即可完成为数据库引擎分配TCP/IP端口号的操作。

在配置完SQL Server协议后,使之侦听特定端口号,可以通过下列3种方法,使用客户端应用程序连接到特定端口。

·运行服务器上的SQL Server Browser服务,按名称连接到数据库引擎实例。

·在客户端上创建一个别名,制定端口号。

·对客户端进行编程,以便使用自定义连接字符串进行连接。

3.查看用户使用何种协议进行操作

用户可以在SQL Server Management Studio中新建查询,输入并执行如下语句以查询用户使用何种协议进行操作。

Select net_transport
From sys.dm_exec_connections
Where session_id=@@spid

运行结果如下所示,连接使用Shared memory网络协议。

net_transport
Shared memory

2.2.3 配置客户端网络协议

用户可以根据需要管理客户端网络协议,如启用或者禁用、设置协议的优先级等,以提供更加可靠的性能。

用户可以根据需要启用或禁用某一客户端协议,如TCP/IP协议,具体操作步骤如下。

(1)选择“开始|程序|Microsoft SQL Server 2005|配置工具|SQL Server配置管理器”命令,打开“SQL Server配置管理器”窗口。

(2)展开“SQL Native Client配置”结点。

(3)在控制台窗格中,右击“客户端协议”,在弹出的快捷菜单中选择“属性”命令,打开“客户端协议属性”对话框。

(4)单击“禁用的协议”框中的协议,单击“>”按钮来启用协议。如本例中启用了“TCP/IP”和“Named Pipes”协议。同样,可以通过单击“启用的协议”框中的协议,再单击“<”按钮来禁用协议。

(5)在“启用的协议”框中,单击“↑”或“↓”按钮更改连接到SQL Server时尝试使用的协议的顺序。“启用的协议”框中最上面的协议是默认协议。

(6)单击“确定”按钮,完成配置客户端的网络协议。