凌峰创科服务平台

如何修改SQL Server服务器名?

核心概念:服务器名的两种类型

在讨论如何获取服务器名之前,首先要理解 SQL Server 中通常涉及到的两种“服务器名”:

如何修改SQL Server服务器名?-图1
(图片来源网络,侵删)
  1. 计算机名

    • 这是指运行 SQL Server 实例的物理或虚拟机器的操作系统名称。
    • DESKTOP-JDOESRV-DB-PROD01WIN-SQL-2025
    • 这是最基础的服务器标识符。
  2. SQL Server 服务器名 / 连接名

    • 这是客户端用来连接 SQL Server 实例的名称,它可以是计算机名,也可以是其他更复杂的名称。
    • 默认实例: SQL Server 是作为默认实例安装的,那么服务器名通常就是计算机名。DESKTOP-JDOE
    • 命名实例: SQL Server 是作为命名实例安装的(例如在安装时指定了实例名 SQLEXPRESS),那么服务器名就是 计算机名\实例名DESKTOP-JDOE\SQLEXPRESS
    • 虚拟网络名称: 在 Always On 可用性组、故障转移群集或某些云部署中,客户端会连接到一个虚拟的、独立的网络名称,而不是具体的计算机名。AG-Listener-01

理解了这两个概念,我们就能更准确地找到我们需要的信息。


如何获取服务器名(按场景分类)

您在 SQL Server 内部(例如使用 SSMS 或 Management Studio)

这是最简单直接的情况。

如何修改SQL Server服务器名?-图2
(图片来源网络,侵删)

方法 1:使用 T-SQL 查询(推荐)

您可以在任何查询窗口中执行以下任意一条命令来获取服务器名。

-- 方法 1.1: 获取完整的连接服务器名(包含实例名)
SELECT @@SERVERNAME AS [Server Name];
-- 方法 1.2: 获取计算机名(操作系统主机名)
SELECT SERVERPROPERTY('MachineName') AS [Machine Name];
-- 方法 1.3: 获取 SQL Server 实例名
SELECT SERVERPROPERTY('InstanceName') AS [Instance Name];
-- 方法 1.4: 获取 SQL Server 版本信息(常用于确认环境)
SELECT SERVERPROPERTY('ProductVersion') AS [Product Version],
       SERVERPROPERTY('Edition') AS [Edition];

解释:

  • @@SERVERNAME:返回 SQL Server 实例的名称,这个名称在安装时或之后被设置,它是最常用的连接标识符。
  • SERVERPROPERTY('MachineName'):返回运行 SQL Server 的操作系统的计算机名,这在故障排查时非常有用。
  • SERVERPROPERTY('InstanceName'):返回实例名,如果是默认实例,则返回 NULL

方法 2:使用图形界面(SSMS)

如何修改SQL Server服务器名?-图3
(图片来源网络,侵删)
  1. 对象资源管理器 中,连接到您的 SQL Server 实例。
  2. 顶部导航栏会直接显示连接的服务器名。
  3. 右键点击服务器名,选择 “属性” (Properties)
  4. 在弹出的窗口中,左侧选择 “常规” (General),右侧可以看到“服务器名称”和“操作系统”等信息。

您在操作系统的命令行中(CMD 或 PowerShell)

当您无法登录到 SQL Server,但需要从服务器本身或通过网络查询时,这些方法非常有用。

方法 1:使用命令提示符

打开 cmd.exe,然后执行以下命令之一:

-- 查看完整的计算机名
hostname
-- 查看计算机名和 IP 地址信息(包含主机名)
ipconfig /all

方法 2:使用 PowerShell

打开 PowerShell,执行以下命令:

# 查看完整的计算机名
$env:COMPUTERNAME
# 查看更详细的网络信息,包含主机名
Get-NetAdapter | Format-List Name, InterfaceDescription, MacAddress, LinkSpeed, Status
Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "以太网" # 替换为您的网卡名称

您在客户端计算机上,需要连接远程 SQL Server

当您需要从另一台电脑连接数据库时,您需要知道目标服务器的名称或 IP 地址。

方法 1:使用 SQL Server Management Studio (SSMS)

  1. 打开 SSMS,在“连接到服务器”对话框中。
  2. 服务器名称 字段就是您需要填写的地方。
  3. 您可以尝试输入以下内容来测试连接:
    • 计算机名 (如果对方是默认实例): SRV-DB-PROD01
    • 计算机名\实例名 (如果对方是命名实例): SRV-DB-PROD01\SQLEXPRESS
    • IP 地址 (如果对方配置了允许): 168.1.100
    • 虚拟网络名称 (如果对方是 AG 或 FCI): AG-Listener-01

方法 2:使用网络工具

如果您不知道服务器名称,可以使用网络工具来查找:

  1. ping 命令:如果您知道服务器的 IP 地址,可以用它来反向解析主机名。

    ping 192.168.1.100

    如果配置了 DNS,您可能会看到类似 Pinging SRV-DB-PROD01 [192.168.1.100] 的输出。

  2. 端口扫描:如果只知道 IP 地址,可以扫描 SQL Server 的默认端口 1433 (TCP) 来确认服务是否在线,可以使用工具如 PortQrynmap

    portqry -n 192.168.1.100 -e 1433
  3. DNS 查询:如果您在域环境中,可以询问网络管理员或直接查询 DNS 服务器来查找特定名称的记录。


您是应用程序开发者(C#)

在应用程序代码中,您通常不需要“获取”服务器名,而是使用一个配置好的连接字符串,连接字符串中包含了服务器名信息。

示例 C# 代码(从配置文件读取)

假设您的 appsettings.json 文件中配置了连接字符串:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=DESKTOP-JDOE\\SQLEXPRESS;Database=MyDB;User Id=myUser;Password=myPassword;"
  }
}

您可以在 C# 代码中这样读取它:

using Microsoft.Extensions.Configuration;
// ... 在您的 Program.cs 或 Startup.cs 中
var builder = WebApplication.CreateBuilder(args);
// 从配置文件获取连接字符串
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
// 如果您想从中提取出服务器名部分,可以手动解析
// 或者使用 SqlConnectionStringBuilder 类来安全地解析
var builder = new SqlConnectionStringBuilder(connectionString);
string serverName = builder.DataSource; // 这将得到 "DESKTOP-JDOE\\SQLEXPRESS"
Console.WriteLine($"连接到的服务器是: {serverName}");

总结与最佳实践

场景 推荐方法 备注
在 SQL Server 内部 SELECT @@SERVERNAME;SERVERPROPERTY('MachineName') 最准确、最常用。@@SERVERNAME 是连接名,MachineName 是物理机名。
在服务器命令行 hostname$env:COMPUTERNAME 快速获取操作系统主机名。
从客户端连接 使用 SSMS 的连接对话框或网络工具 需要知道 计算机名计算机名\实例名 或 IP 地址。
应用程序开发 使用连接字符串 服务器名应存储在配置文件中,而不是硬编码在代码里。

重要提示:

  • 权限问题:查询 @@SERVERNAMESERVERPROPERTY 通常需要 public 角色的权限,几乎所有登录用户都有。
  • @@SERVERNAME vs MachineName@@SERVERNAME 是 SQL Server 的逻辑名,可以在安装后通过 sp_addserversp_dropserver 命令进行更改,而 MachineName 是操作系统主机名,通常不会变,在大多数情况下,两者是一致的,但在复杂环境中(如重命名服务器后未同步),它们可能不同,故障排查时,两个信息都很有价值。
分享:
扫描分享到社交APP
上一篇
下一篇