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(除非需要),以简化安全管理和提升可维护性。

相关推荐
YOU OU4 小时前
Redis基础常识与命令
数据库·redis·缓存
Database_Cool_7 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森7 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_8 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白8 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面9 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧9 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈9 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy9 小时前
log4net 数据库存日志正确配置
数据库