SQL Server服务为服务进程,它与客户端程序为两个不同的进程。这两个进程间通过在SNI(SQL Server Network Interface)协议层上建立网络连接进行通信,通信过程中使用“表格格式数据流”(TDS)格式的数据包进行数据传输。
SQL Server服务器建立被称为“TDS端点”(EndPoint)的对象。TDS端点在安装SQL Server时由SQL Server安装,同时也可以通过CREATE ENDPOINT创建及使用ALTER ENDPOINT修改。
客户端通过SQL Server Native Client与服务器端进行通信,客户端与SQL Server服务端使用相同的网络协议(也就是说,在SQL Server服务端及SQL Server Native Client中都默认封装好了相同的协议),这些网络协议有以下四种:
共享内存。该协议默认是开启的。客户端与服务端在同一机器中时,可以使用该协议。通常指定服务器地址为lpc:<servername>[\<instancename>],机器名或机器名\实例名会使用共享内存。
TCP/IP。在TCP/IP协议开启时,可以使用该协议。客户端与服务端在不同机器或本机均可以使用该协议。通常指定服务器地址为IP地址时使用。
命名管道。启用NamePipe协议后,在客户端连接地址使用np:\\computername\pipe\pipename指定使用命名管道,本机使用localhost、(local)时也会使用命名管道。
VIA。启用VIA协议后,在客户端指定via:servername[\instancename],<nicnumber>:
<port>连接字符串会使用VIA协议。
在进行客户端与数据库引擎的指令发送和数据读取过程中,数据拷贝(Builk Copy等)同时也包括一些高可用性(如镜像、Service Broker等)过程,网络间的传输速率将直接影响到SQL Server的运行效率。