- 服务器端配置:配置 SQL Server 实例本身,让它准备好接受网络连接。
- 客户端配置:配置客户端计算机,让它知道如何连接到远程的 SQL Server。
服务器端网络配置
服务器端的核心是 SQL Server 配置管理器,这是管理 SQL Server 网络设置的主要工具。

启动 SQL Server 配置管理器
你可以通过以下方式找到它:
- 开始菜单 -> 搜索 "SQL Server Configuration Manager"。
- 在 SQL Server 安装目录的
Tools文件夹下(如C:\Program Files\Microsoft SQL Server\150\Tools\Binn)。
关键概念:协议
SQL Server 使用不同的“协议”来与客户端通信,最常见的协议是 TCP/IP 和 Named Pipes。
-
TCP/IP:
- 工作方式:使用标准的网络套接字,通过 IP 地址和端口号进行通信,这是最常用、最推荐的方式,尤其是在跨网络连接时。
- 优点:性能好,兼容性强,支持所有类型的网络连接。
- 缺点:需要配置防火墙规则。
-
Named Pipes:
(图片来源网络,侵删)- 工作方式:使用 Windows 提供的进程间通信机制,在本地连接时,速度很快。
- 优点:在本地局域网中连接速度可能很快。
- 缺点:跨网络连接时性能较差,且默认在 Windows 身份验证下工作,在现代 SQL Server 版本中,已不再是默认协议。
-
Shared Memory:
- 工作方式:最简单的协议,仅用于客户端和 SQL Server 在同一台计算机上的连接,它不使用网络。
- 特点:速度最快,无法用于远程连接,默认启用且无法禁用。
-
VIA (Virtual Interface Architecture):
- 一种过时的协议,用于特定的硬件,在 SQL Server 2008 及更高版本中已不再可用。
核心配置步骤
假设我们要配置一个名为 SQLEXPRESS 的 SQL Server 实例,让它能够通过 TCP/IP 协议被远程客户端访问。
步骤 1:启用 TCP/IP 协议
- 在 SQL Server 配置管理器中,展开左侧的 “SQL Server 网络配置”。
- 在右侧,你会看到所有已安装的 SQL Server 实例及其协议。
- 找到你的实例(
SQLEXPRESS的协议),右键点击 “TCP/IP”,选择 “启用”。
步骤 2:配置 TCP/IP 属性
- 右键点击 “TCP/IP”,选择 “属性”。
a) IP 地址 选项卡
这是最重要的部分,你会看到多个 IP 地址条目:
- IPAll:这是一个汇总设置,通常用于动态端口配置。
- IP1, IP2, ...:对应服务器上绑定的每个网络接口卡(例如以太网、Wi-Fi)。
配置要点:
- 为所有 IP 地址启用 (可选):如果你想通过服务器的任何一个 IP 地址访问 SQL Server,可以勾选每个 IP 地址下的 “已启用”,我们只配置一个 IP 地址。
- 配置特定 IP 地址 (推荐):
- 选择 IP 地址 选项卡。
- 选择一个 IP 地址(
IP2,如果你的服务器有多个网卡)。 - 在 “IP 地址” 部分,将 “已启用” 设置为 “是”。
- TCP 动态端口:保持为空(或
0),让 SQL Server 自动分配一个端口号。 - TCP 端口:强烈建议将其设置为一个静态端口号,
1433,这是 SQL Server 的默认端口,使用静态端口可以简化客户端连接和防火墙配置。 - IP 地址:确保这里的 IP 地址是正确的,对于本地连接,可以是
0.0.1,对于局域网,填写服务器的局域网 IP 地址(如168.1.100)。 - IPAll:
- TCP 动态端口:如果所有 IP 地址都使用动态端口,这里会显示端口号,如果某个 IP 地址设置了静态端口,这里可以为空。
- TCP 端口:如果所有 IP 地址都使用同一个静态端口,可以在这里设置(
1433),但更推荐的做法是在每个启用的 IP 地址上单独设置。
b) 选项 选项卡
- Keep Alive:设置一个值(秒),如果指定时间内没有活动,TCP 会发送一个 keep-alive 消息来检查连接是否仍然有效,默认为
-1(禁用),在高安全性或长时间连接的场景下可以启用。 - Listen All:这是一个非常关键的设置!
- 是:SQL Server 实例将在所有启用的 IP 地址上监听,这是默认设置。
- 否:SQL Server 只在 IP 地址选项卡中 “已启用” 为“是”的那些特定 IP 地址上监听。
- 建议:对于大多数情况,保持 “是” 即可,如果你只想让 SQL Server 在特定的网卡(如专用于数据库的网卡)上监听,可以设置为 “否”,然后只启用那个 IP 地址。
步骤 3:重启 SQL Server 服务
所有协议配置更改后,必须重启 SQL Server 服务才能生效。
- 在 SQL Server 配置管理器中,展开 “SQL Server 服务”。
- 右键点击你的 SQL Server 实例(
SQL Server (SQLEXPRESS)),选择 “重新启动”。
步骤 4:配置 Windows 防火墙
SQL Server 默认不会在 Windows 防火墙中自动创建入站规则,你需要手动添加。
- 打开 “Windows Defender 防火墙”。
- 点击左侧的 “允许应用或功能通过 Windows Defender 防火墙”。
- 点击 “更改设置”(需要管理员权限)。
- 点击 “允许其他应用...”。
- 找到并添加
sqlserver.exe(通常位于C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Binn目录下)。 - 在 “专用” 和 “公用” 列中勾选,并确保 “域” 也被勾选(如果适用)。
- 你也可以直接在“高级设置”中创建一个新的“入站规则”,类型为“端口”,TCP,特定本地端口(
1433),然后允许连接。
客户端网络配置
客户端配置决定了你的应用程序或工具(如 SSMS、sqlcmd)如何找到 SQL Server。
连接字符串
这是最核心的客户端配置方式,连接字符串包含所有连接所需的信息。
基本格式:
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
关键参数:
-
Server / Address / Data Source:
- 服务器名实例名:
.\SQLEXPRESS(本地默认实例) 或SERVERNAME\SQLEXPRESS(远程服务器)。 - IP 地址+端口:
168.1.100,1433(最明确的方式,推荐用于远程连接)。 - 计算机名:
SQL_SERVER_HOST(如果计算机名能被解析)。
- 服务器名实例名:
-
Network Library / Protocol:
Network Library=dbmssocn:强制使用 TCP/IP 协议(dbmssocn是 TCP/IP 的 DLL 名称),这是最常用的。Network Library=dbnmpntw:强制使用 Named Pipes 协议。- 通常不需要显式设置,SQL Server 客户端会自动尝试可用的协议。
-
Encrypt:
Encrypt=yes或true:强制加密连接,为了安全,强烈建议在生产环境中启用,如果服务器配置了强制加密,客户端也必须设置此选项。
示例连接字符串:
- 连接到本地
SQLEXPRESS实例:Server=.\SQLEXPRESS;Database=master;User Id=sa;Password=your_password; - 通过 TCP/IP 连接到远程服务器:
Server=192.168.1.100,1433;Database=Sales;User Id=sa;Password=your_password;Network Library=dbmssocn;Encrypt=yes;
SQL Server Client Configuration Utility (cliconfg.msc)
这是一个老式的工具,用于配置客户端的网络库别名,在现代应用中较少使用,但了解它有助于理解原理。
- 按
Win + R,输入cliconfg.msc并回车。 - 你可以在这里创建一个“别名”,给一个复杂的连接地址起一个简单的名字。
- 别名:
MyDBServer - 服务器:
168.1.100,1433 - 网络库:选择 TCP/IP。
- 别名:
- 之后,在连接字符串中就可以直接使用
Server=MyDBServer。
服务器别名
这个工具在服务器端,但它的作用是为该服务器上的客户端程序(例如在服务器上运行的 ODBC 驱动程序)创建一个连接别名,指向另一个 SQL Server 实例。
- 在 SQL Server 配置管理器中,右键点击 “客户端协议”,选择 “添加别名...”。
- 填写别名信息,包括目标服务器的名称、协议和端口。
- 这样,在该服务器上运行的任何应用程序,都可以使用这个别名来连接,而无需知道目标服务器的真实 IP 地址。
常见问题排查
-
错误:
Cannot connect to .../网络相关或实例特定错误- 原因:最常见的连接问题。
- 排查步骤:
- 检查服务:确认 SQL Server 服务是否正在运行。
- 检查协议:在服务器端,确认 TCP/IP 协议已启用。
- 检查端口:确认客户端连接字符串中的端口号与服务器端配置的静态端口一致。
- 检查防火墙:确认 Windows 防火墙允许该端口的入站流量。
- 检查 IP 地址:确认客户端使用的 IP 地址是正确的,并且服务器在该 IP 上监听。
- 检查 SQL Server 配置管理器中的 TCP/IP 属性:确保
Listen All设置为Yes,或者至少有一个启用的 IP 地址。 - 使用 Telnet/Test-NetConnection 测试网络连通性:
# 在客户端 PowerShell 中运行 Test-NetConnection <服务器IP地址> -Port <端口号, 如 1433>
TcpTestSucceeded为True,说明网络是通的,问题出在 SQL Server 服务或权限上。
-
错误:
Login failed for user 'sa'- 原因:身份验证失败。
- 排查步骤:
- 确认密码:密码是否正确。
- 确认身份验证模式:在服务器属性中,确认 SQL Server 混合模式或 Windows 身份验证模式已启用,
sa账户已启用。 - 检查权限:确认
sa账户是否有权限访问目标数据库。
| 配置层面 | 核心工具/概念 | 关键操作 |
|---|---|---|
| 服务器端 | SQL Server 配置管理器 | 启用 TCP/IP 协议。配置 TCP/IP 属性,设置静态端口(如 1433)。确认 Listen All 设置。重启 SQL Server 服务。 配置 Windows 防火墙入站规则。 |
| 客户端 | 连接字符串 | 使用 Server=IP,端口 的格式(最推荐)。根据需要指定 Network Library 和 Encrypt。 |
| 高级/遗留 | Client Configuration Utility | 创建客户端别名,简化连接字符串。 |
遵循以上步骤,你就可以成功地配置和管理 SQL Server 的网络连接了。协议启用 -> 属性配置 -> 服务重启 -> 防火墙放行 是服务器端配置的核心流程。
