SQL Server 支持多种网络协议用于客户端与数据库引擎之间的通信

SQL Server 支持多种网络协议用于客户端与数据库引擎之间的通信。最常见的 3 种数据库连接协议(也称为网络协议或通信协议)如下:


1. TCP/IP(Transmission Control Protocol/Internet Protocol)

  • 最常用、推荐的协议,尤其适用于远程连接和跨网络通信。
  • 使用固定的端口(默认是 1433),也可以配置为动态端口或多 IP 监听。
  • 支持 IPv4 和 IPv6。
  • 在防火墙环境中易于配置(只需开放对应端口)。
  • 适用场景:局域网、广域网、互联网连接、应用程序服务器与数据库分离部署。

✅ 优点 :稳定、高效、广泛支持。

⚠️ 注意 :需确保 SQL Server 已启用 TCP/IP 协议(通过 SQL Server 配置管理器 启用)。


2. Named Pipes(命名管道)

  • 基于 Windows 的进程间通信(IPC)机制,使用文件系统路径风格的管道名(如 \\.\pipe\sql\query)。
  • 通常用于 本地或局域网内 的快速通信,尤其在早期 Windows 环境中较常见。
  • 依赖于 SMB(Server Message Block)协议,因此在网络延迟高或跨防火墙时性能较差。
  • 默认在本地连接(如 localhost 或 .)时可能优先使用 Named Pipes。

✅ 优点 :在低延迟局域网中性能良好。

❌ 缺点:跨网络或互联网支持差,安全性较低,现代应用中逐渐被 TCP/IP 取代。


3. Shared Memory(共享内存)

  • 仅限本地连接:当客户端与 SQL Server 实例运行在同一台机器上时使用。
  • 是最快、最高效的协议,因为不经过网络堆栈。
  • 无法用于远程连接。
  • 当连接字符串中使用 (local)、localhost、. 或 127.0.0.1 且未指定协议时,SQL Server 客户端驱动程序会优先尝试 Shared Memory。

✅ 优点 :零网络开销,速度极快。

❌ 限制:只能用于本机连接。


补充说明:

  • SQL Server 客户端(如 .NET 的 SqlClient)会按 协议顺序 自动尝试连接(可通过 SQL Server Client Network Utility 或注册表配置顺序)。
  • 默认协议尝试顺序通常是:Shared Memory → TCP/IP → Named Pipes。
  • VIA(Virtual Interface Adapter) 曾是第四种协议,但微软已在 SQL Server 2012 之后弃用并移除,不再推荐使用。

如何查看/配置协议?

  • 使用 SQL Server 配置管理器(SQL Server Configuration Manager) :
    • 启用/禁用服务器端的协议(SQL Server Network Configuration → Protocols for <实例名>)
    • 配置客户端协议(SQL Native Client Configuration → Client Protocols)

总结对比:

协议 是否支持远程 默认启用 典型用途
Shared Memory ❌ 仅本地 ✅ 本机调试、本地工具连接
TCP/IP ✅ ✅ 大多数生产环境、远程连接
Named Pipes ✅(局域网) ⚠️ 视版本 旧系统、Windows 内网环境

💡 最佳实践 :生产环境中建议 启用 TCP/IP 并禁用 Named Pipes 和 Shared Memory(除非需要),以简化安全管理和提升可维护性。

相关推荐
这个DBA有点耶2 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风2 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio2 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
数据库急诊室_阿哲6 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋7 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子7 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T8 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡9 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Aloudata9 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Decay__9 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构