睿诚科技协会

SQL Server网络配置如何正确设置?

  1. 服务器端配置:配置 SQL Server 实例本身,让它准备好接受网络连接。
  2. 客户端配置:配置客户端计算机,让它知道如何连接到远程的 SQL Server。

服务器端网络配置

服务器端的核心是 SQL Server 配置管理器,这是管理 SQL Server 网络设置的主要工具。

SQL Server网络配置如何正确设置?-图1
(图片来源网络,侵删)

启动 SQL Server 配置管理器

你可以通过以下方式找到它:

  • 开始菜单 -> 搜索 "SQL Server Configuration Manager"。
  • 在 SQL Server 安装目录的 Tools 文件夹下(如 C:\Program Files\Microsoft SQL Server\150\Tools\Binn)。

关键概念:协议

SQL Server 使用不同的“协议”来与客户端通信,最常见的协议是 TCP/IPNamed Pipes

  • TCP/IP

    • 工作方式:使用标准的网络套接字,通过 IP 地址和端口号进行通信,这是最常用、最推荐的方式,尤其是在跨网络连接时。
    • 优点:性能好,兼容性强,支持所有类型的网络连接。
    • 缺点:需要配置防火墙规则。
  • Named Pipes

    SQL Server网络配置如何正确设置?-图2
    (图片来源网络,侵删)
    • 工作方式:使用 Windows 提供的进程间通信机制,在本地连接时,速度很快。
    • 优点:在本地局域网中连接速度可能很快。
    • 缺点:跨网络连接时性能较差,且默认在 Windows 身份验证下工作,在现代 SQL Server 版本中,已不再是默认协议。
  • Shared Memory

    • 工作方式:最简单的协议,仅用于客户端和 SQL Server 在同一台计算机上的连接,它不使用网络。
    • 特点:速度最快,无法用于远程连接,默认启用且无法禁用。
  • VIA (Virtual Interface Architecture)

    • 一种过时的协议,用于特定的硬件,在 SQL Server 2008 及更高版本中已不再可用。

核心配置步骤

假设我们要配置一个名为 SQLEXPRESS 的 SQL Server 实例,让它能够通过 TCP/IP 协议被远程客户端访问。

步骤 1:启用 TCP/IP 协议

  1. 在 SQL Server 配置管理器中,展开左侧的 “SQL Server 网络配置”
  2. 在右侧,你会看到所有已安装的 SQL Server 实例及其协议。
  3. 找到你的实例(SQLEXPRESS 的协议),右键点击 “TCP/IP”,选择 “启用”

步骤 2:配置 TCP/IP 属性

  1. 右键点击 “TCP/IP”,选择 “属性”

a) IP 地址 选项卡

这是最重要的部分,你会看到多个 IP 地址条目:

  • IPAll:这是一个汇总设置,通常用于动态端口配置。
  • IP1, IP2, ...:对应服务器上绑定的每个网络接口卡(例如以太网、Wi-Fi)。

配置要点:

  • 为所有 IP 地址启用 (可选):如果你想通过服务器的任何一个 IP 地址访问 SQL Server,可以勾选每个 IP 地址下的 “已启用”,我们只配置一个 IP 地址。
  • 配置特定 IP 地址 (推荐)
    1. 选择 IP 地址 选项卡。
    2. 选择一个 IP 地址(IP2,如果你的服务器有多个网卡)。
    3. “IP 地址” 部分,将 “已启用” 设置为 “是”
    4. TCP 动态端口:保持为空(或 0),让 SQL Server 自动分配一个端口号。
    5. TCP 端口强烈建议将其设置为一个静态端口号1433,这是 SQL Server 的默认端口,使用静态端口可以简化客户端连接和防火墙配置。
    6. IP 地址:确保这里的 IP 地址是正确的,对于本地连接,可以是 0.0.1,对于局域网,填写服务器的局域网 IP 地址(如 168.1.100)。
    7. 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 服务才能生效。

  1. 在 SQL Server 配置管理器中,展开 “SQL Server 服务”
  2. 右键点击你的 SQL Server 实例(SQL Server (SQLEXPRESS)),选择 “重新启动”

步骤 4:配置 Windows 防火墙

SQL Server 默认不会在 Windows 防火墙中自动创建入站规则,你需要手动添加。

  1. 打开 “Windows Defender 防火墙”
  2. 点击左侧的 “允许应用或功能通过 Windows Defender 防火墙”
  3. 点击 “更改设置”(需要管理员权限)。
  4. 点击 “允许其他应用...”
  5. 找到并添加 sqlserver.exe(通常位于 C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Binn 目录下)。
  6. “专用”“公用” 列中勾选,并确保 “域” 也被勾选(如果适用)。
  7. 你也可以直接在“高级设置”中创建一个新的“入站规则”,类型为“端口”,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=yestrue:强制加密连接,为了安全,强烈建议在生产环境中启用,如果服务器配置了强制加密,客户端也必须设置此选项。

示例连接字符串:

  • 连接到本地 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)

这是一个老式的工具,用于配置客户端的网络库别名,在现代应用中较少使用,但了解它有助于理解原理。

  1. Win + R,输入 cliconfg.msc 并回车。
  2. 你可以在这里创建一个“别名”,给一个复杂的连接地址起一个简单的名字。
    • 别名MyDBServer
    • 服务器168.1.100,1433
    • 网络库:选择 TCP/IP。
  3. 之后,在连接字符串中就可以直接使用 Server=MyDBServer

服务器别名

这个工具在服务器端,但它的作用是为该服务器上的客户端程序(例如在服务器上运行的 ODBC 驱动程序)创建一个连接别名,指向另一个 SQL Server 实例。

  1. 在 SQL Server 配置管理器中,右键点击 “客户端协议”,选择 “添加别名...”
  2. 填写别名信息,包括目标服务器的名称、协议和端口。
  3. 这样,在该服务器上运行的任何应用程序,都可以使用这个别名来连接,而无需知道目标服务器的真实 IP 地址。

常见问题排查

  1. 错误:Cannot connect to ... / 网络相关或实例特定错误

    • 原因:最常见的连接问题。
    • 排查步骤
      1. 检查服务:确认 SQL Server 服务是否正在运行。
      2. 检查协议:在服务器端,确认 TCP/IP 协议已启用。
      3. 检查端口:确认客户端连接字符串中的端口号与服务器端配置的静态端口一致。
      4. 检查防火墙:确认 Windows 防火墙允许该端口的入站流量。
      5. 检查 IP 地址:确认客户端使用的 IP 地址是正确的,并且服务器在该 IP 上监听。
      6. 检查 SQL Server 配置管理器中的 TCP/IP 属性:确保 Listen All 设置为 Yes,或者至少有一个启用的 IP 地址。
      7. 使用 Telnet/Test-NetConnection 测试网络连通性
        # 在客户端 PowerShell 中运行
        Test-NetConnection <服务器IP地址> -Port <端口号, 如 1433>

        TcpTestSucceededTrue,说明网络是通的,问题出在 SQL Server 服务或权限上。

  2. 错误:Login failed for user 'sa'

    • 原因:身份验证失败。
    • 排查步骤
      1. 确认密码:密码是否正确。
      2. 确认身份验证模式:在服务器属性中,确认 SQL Server 混合模式或 Windows 身份验证模式已启用,sa 账户已启用。
      3. 检查权限:确认 sa 账户是否有权限访问目标数据库。
配置层面 核心工具/概念 关键操作
服务器端 SQL Server 配置管理器 启用 TCP/IP 协议。
配置 TCP/IP 属性,设置静态端口(如 1433)。
确认 Listen All 设置。
重启 SQL Server 服务
配置 Windows 防火墙入站规则。
客户端 连接字符串 使用 Server=IP,端口 的格式(最推荐)。
根据需要指定 Network LibraryEncrypt
高级/遗留 Client Configuration Utility 创建客户端别名,简化连接字符串。

遵循以上步骤,你就可以成功地配置和管理 SQL Server 的网络连接了。协议启用 -> 属性配置 -> 服务重启 -> 防火墙放行 是服务器端配置的核心流程。

分享:
扫描分享到社交APP
上一篇
下一篇