- 核心概念:SQL Server 使用的网络库
- 主要配置工具
- 配置步骤详解(以 SQL Server Configuration Manager 为例)
- 常见网络协议详解
- 常见问题与解决方案
- 安全建议
核心概念:SQL Server 使用的网络库
当客户端连接 SQL Server 时,它并不是直接与数据库引擎对话,而是通过一个叫做 网络库 的中间层,网络库负责处理底层的网络通信,如建立连接、数据打包和解析等。

SQL Server 支持多种网络库,对应不同的网络协议:
| 协议/网络库 | 说明 | 默认端口 | 适用场景 |
|---|---|---|---|
| TCP/IP | 最常用、最可靠的协议,通过套接字进行通信,支持局域网和广域网。 | 1433 | 强烈推荐,几乎所有场景下的首选。 |
| Named Pipes | 一种进程间通信机制,在早期的 Windows 版本中性能较好,但在现代网络环境中不如 TCP/IP 稳定和高效。 | (动态) | 已不推荐,主要用于旧版应用或特定 Windows 环境下的本地连接。 |
| Shared Memory | 最快的连接方式,因为它不需要通过网络,仅在客户端和 SQL Server 位于同一台机器时使用。 | (专用) | 仅用于本地连接,无法用于远程连接。 |
| VIA (Virtual Interface Adapter) | 一种专用的、高性能的网络协议,需要特定的硬件支持。 | (动态) | 已过时,现代 SQL Server 版本中已移除。 |
对于绝大多数现代应用,TCP/IP 是唯一需要启用的协议。
主要配置工具
配置 SQL Server 网络主要有两种官方工具:
-
SQL Server Configuration Manager (SSCM)
(图片来源网络,侵删)- 推荐工具,这是专门为 SQL Server 设计的图形化管理工具,是进行网络配置最直观、最安全的方式。
- 它是一个 Microsoft Management Console (MMC) 管理单元,通常随 SQL Server 安装一起提供。
-
SQL Server 网络配置存储过程
- 通过执行 Transact-SQL 命令来配置。
- 主要存储过程:
sp_configure和reconfigure。 - 适用场景:自动化部署、脚本化配置或在没有图形界面的服务器上进行配置。
- 示例:
-- 启用 named pipes 协议 EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'network packet size', 4096; -- 只是示例,并非直接启用协议 -- 真正启用协议需要修改系统表,不推荐直接操作,建议使用 SSCM
本文将主要介绍使用 SQL Server Configuration Manager 的配置方法。
配置步骤详解 (以 SQL Server Configuration Manager 为例)
假设你已经以管理员身份登录了服务器。
步骤 1:打开 SQL Server Configuration Manager
在开始菜单中找到并打开 "SQL Server Configuration Manager"。

步骤 2:定位到网络配置
在左侧的树形视图中,展开 SQL Server Network Configuration。
你会看到两个重要的节点:
- Protocols for SQLEXPRESS (或你的实例名,如
MSSQLSERVER代表默认实例):这里配置的是特定实例的网络协议,如果你有多个 SQL Server 实例,每个实例都有自己的协议列表。 - SQL Server Client Protocols:这里配置的是客户端将尝试使用的网络库顺序,通常我们只需要配置服务器端,客户端会自动检测。
步骤 3:启用/禁用协议
- 选择要配置的实例,我们选择
Protocols for SQLEXPRESS。 - 你会在右侧看到一个协议列表,如
Named Pipes,Shared Memory,TCP/IP。 - 启用 TCP/IP:
- 右键点击
TCP/IP,选择Enable。 - 启用后,该协议的状态会变为
Enabled。
- 右键点击
- 禁用不需要的协议:
- 对于
Named Pipes,除非有特殊需求,否则建议右键点击并选择Disable。 Shared Memory无法禁用,它是为本地连接保留的。
- 对于
步骤 4:配置 TCP/IP 属性(关键步骤)
这是网络配置中最核心的部分,决定了 SQL Server 如何监听和接受连接。
-
右键点击
TCP/IP,选择Properties。 -
IP 地址 选项卡
- 这里列出了服务器上所有的网络接口卡。
- IPAll:这是最重要的设置,它为所有未明确配置的 IP 地址提供默认设置。
- TCP 动态端口:
- 如果设置为
0,表示 SQL Server 将使用一个随机、可变的端口进行监听。 - 注意:如果使用动态端口,客户端连接时就不能指定
1433,而必须使用 SQL Server Browser 服务 来查询实例的实际端口号,这会增加配置的复杂性。
- 如果设置为
- TCP 端口:
- 这是 SQL Server 的静态端口,默认值是
1433。 - 强烈建议:将此值设置为一个固定、非默认的端口号(
14333或51433),这样做可以避免端口被其他程序占用,并且能增强安全性,因为端口扫描工具不会轻易发现它。
- 这是 SQL Server 的静态端口,默认值是
推荐配置:
- 对于
IPAll:TCP 动态端口:留空或设置为0。TCP 端口:设置为14333(或其他你选择的端口)。
- 对于具体的 IP 地址(如
IP1,IP2):Active:设置为Yes,表示该 IP 地址接受连接。TCP 动态端口:留空。TCP 端口:留空,让它继承IPAll的设置。
-
标志 选项卡
HideInstance:如果勾选,SQL Server 实例将不会在网络上“广播”自己的存在,客户端无法通过 SQL Server Browser 发现该实例,必须知道确切的计算机名、实例名和端口号才能连接,这可以提供一定的安全性。
-
证书 选项卡
用于配置 SSL 加密,确保客户端和服务器之间的通信是加密的,这是生产环境的安全最佳实践。
步骤 5:重启 SQL Server 服务
所有配置更改只有在服务重启后才能生效。
- 在 SSCM 左侧,展开
SQL Server Services。 - 找到对应的 SQL Server 服务(如
SQL Server (SQLEXPRESS))。 - 右键点击,选择
Restart。
常见网络协议详解
TCP/IP
- 优点:
- 跨平台:支持 Windows、Linux、macOS 等各种操作系统。
- 稳定可靠:是互联网通信的基础,经过了长期和广泛的验证。
- 性能好:在现代网络中性能卓越。
- 功能丰富:支持端口配置、IP 限制、加密等高级功能。
- 配置要点:如上所述,设置静态端口是关键。
Named Pipes
- 工作原理:在 Windows 环境下,它使用命名管道文件(如
\\.\pipe\sql\query)作为通信通道。 - 缺点:
- 性能较差:在跨网络连接时,性能远不如 TCP/IP。
- 安全性问题:在混合认证模式下,Named Pipes 可能会强制使用 Windows 身份验证,导致无法使用 SQL Server 身份验证。
- 兼容性问题:在非 Windows 平台(如 Linux)上不可用。
- 何时使用:基本不需要,除非你有一个非常古老的、无法修改的客户端应用程序,它只支持 Named Pipes。
Shared Memory
- 工作原理:数据在同一个计算机的内存中直接传递,不经过网络栈。
- 优点:速度最快,延迟最低。
- 限制:仅限本地连接,连接字符串中必须使用
localhost或(local)。 - 用途:非常适合 DBA 在同一台服务器上使用 SQL Server Management Studio (SSMS) 进行管理和开发。
常见问题与解决方案
问题 1:无法连接到 SQL Server,错误提示 "Cannot connect to ..." 或 "Network-related or instance-specific error"
- 原因分析:
- SQL Server 服务未启动。
- 防火墙阻止了连接:Windows 防火墙或网络防火墙可能阻止了
1433(或你设置的静态端口)。 - 网络协议未启用:TCP/IP 协议被禁用。
- 端口不正确:客户端连接字符串中的端口号与服务器端配置的不一致。
- SQL Server Browser 服务未启动:如果服务器使用动态端口或命名实例,而客户端没有指定端口号,则需要此服务。
- 排查步骤:
- 确认 SQL Server 服务正在运行。
- 在服务器上使用
telnet或Test-NetConnection(PowerShell) 测试端口是否开放:Test-NetConnection <服务器IP地址> -Port <端口号,如14333>
如果显示
TcpTestSucceeded: True,则说明网络可达。 - 检查防火墙规则,为 SQL Server 端口添加入站规则。
- 检查 SSCM 中的协议和端口配置。
- 如果使用命名实例或动态端口,确保
SQL Server Browser服务已启动并设置为自动。
问题 2:连接超时
- 原因分析:通常是网络延迟、防火墙规则配置不当(如只允许特定IP访问)或服务器负载过高导致。
- 解决方案:检查网络路径、优化防火墙规则、监控服务器性能。
安全建议
- 禁用 Named Pipes:除非有明确需求,否则始终禁用。
- 使用静态端口:将 TCP/IP 端口从默认的
1433修改为一个非标准端口。 - 配置防火墙:只允许来自受信任 IP 地址的连接访问 SQL Server 的端口。
- 启用 TCP/IP 端口过滤:在 TCP/IP 属性的
IP 地址选项卡中,可以为每个 IP 地址单独设置允许的端口,进一步限制访问。 - 使用强密码:确保所有 SQL Server 登录账户都使用强密码。
- 启用加密:在 TCP/IP 属性的
证书选项卡中配置 SSL/TLS,对连接进行加密,防止数据在传输过程中被窃听。
希望这份详细的指南能帮助你全面理解和配置 SQL Server 的网络环境!
