要查看SQL Server的服务器地址和端口号,最直接的方法是使用SQL Server自带的配置管理器(SQL Server Configuration Manager)或查询系统函数,而端口号通常默认为1433,但数据库实例不同或做过改动时会存在差异。
为什么需要确认SQL服务器地址与端口号
日常开发或运维中,我们经常遇到”连不上数据库”的情况,排查的第一步,往往就是确认服务器地址和端口号是否填对,服务器地址是网络定位,端口号是数据库服务的通道编号,两者缺一不可。
你要配置一个连接字符串,或者用Navicat、DataGrip等客户端工具连接远程数据库,都必须填写准确的服务器IP(或主机名)和端口。很多连接失败,就是端口号写错导致的。
SQL Server允许一个服务器上部署多个实例,默认实例使用1433端口,命名实例则使用动态端口,搞清楚端口号,才能避免客户端连错实例。
通过SQL语句直接查询服务器地址与端口号
如果你已经能登录SQL Server,用一条SQL语句就能同时拿到服务器名和端口信息。
使用sys.dm_exec_connections系统视图
打开SQL Server Management Studio(SSMS),新建查询,输入以下语句:
SELECT local_net_address, local_tcp_port, client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID;
结果会返回三列:
- local_net_address:本机监听地址,比如127.0.0.1或具体的IP。
- local_tcp_port:当前会话使用的TCP端口号。
- client_net_address:客户端的来源IP。
不过要注意,这个查询返回的是你当前连接所走的端口,如果服务器配置了多个IP或端口,需要进一步看服务器配置。
使用SERVERPROPERTY获取服务器名称
SELECT
SERVERPROPERTY('ServerName') AS ServerName,
SERVERPROPERTY('MachineName') AS MachineName,
SERVERPROPERTY('InstanceName') AS InstanceName,
SERVERPROPERTY('IsClustered') AS IsClustered;
实例名如果是空,说明是默认实例,端口通常为1433,如果显示的是类似”SQLEXPRESS”的命名实例,端口就得另查。
查询SQL Server错误日志
SQL Server启动时会把监听端口写入错误日志,执行以下语句:
EXEC xp_readerrorlog 0, 1, 'listening', NULL;
系统会返回类似这样的信息:
Server is listening on [ ‘any’
1433].
其中数字1433就是当前监听端口。这个方法在多次重启后也能查出历史记录,适合排查端口变动情况。
使用SQL Server配置管理器查看端口号
这是最常用、最直观的方法,尤其适合在Windows服务器上操作。
操作路径
在服务器桌面左下角开始菜单搜索”SQL Server Configuration Manager”(如果没找到,可以直接运行SQLServerManager16.msc,不同版本对应不同的数字,SQL Server 2026对应16,2019对应15)。
打开后,按以下步骤操作:
- 展开左侧的”SQL Server 网络配置”。
- 点击你正在运行的实例名称,MS SQLSERVER”或”SQLSERVER实例名”。
- 在右侧找到”TCP/IP”协议,右键点击选择”属性”。
- 切换到”IP 地址”选项卡,向下滚动找到”IPAll”区域。
- 查看”TCP 端口”和”TCP 动态端口”。
TCP 端口”填了1433,说明监听固定端口,TCP 动态端口”有数值,说明端口是动态分配的,每次服务启动可能变化。
需要留意的是:服务器地址不一定等同于服务器IP,如果你在内网通过主机名访问,地址可以填计算机名;如果跨网络访问,一般填公网IP或映射后的域名,客户端连接时会先解析名称再找到IP和端口,所以端口号是最终决定能否通信的关键。
通过命令行查看SQL Server端口
不想打开图形界面的情况下,命令行同样能快速定位。
用netstat查看监听状态
在Windows的CMD或PowerShell里执行:
netstat -ano | findstr 1433
如果SQL Server在运行且使用默认端口,会看到类似:
TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 1234
最后一列是进程ID,再通过进程ID反查SQL Server服务:
tasklist /fi "PID eq 1234"
看到sqlservr.exe就能确认。
用SQL Server的ERRORLOG定位
如果你知道SQL Server的错误日志文件位置(通常位于C:Program FilesMicrosoft SQL ServerMSSQL16.MSSQLSERVERMSSQLLogERRORLOG),用文本编辑器打开,搜索”port”,也能找到初始启动信息。
行业共识认为,命令行方式比图形界面更适合批量排查多台服务器,尤其在无人值守的运维场景中非常实用。
本地服务器地址和远程服务器地址的区别
很多新手会混淆”服务器地址”这个概念,不同连接场景下,地址写法完全不同。
本地连接
如果程序和数据库在同一台机器上,服务器地址可以直接填:
- localhost
- 0.0.1
这三个都代表本机,此时端口号除非刻意改过,否则1433就能通。
局域网连接
常见的SQL服务器地址写法是:
- 168.1.10(内网IP)
- PC-OfficeSQLEXPRESS(主机名加实例名)
如果使用命名实例,端口号一般不是1433,而是动态端口,为了避免每次动态变化,建议在配置管理器里把端口固定下来。
公网或云服务器连接
这种情况需要填写云服务器的公网IP或绑定域名,如果你是买的云数据库产品,比如简米云RDS或酷番云SQL Server,控制台会直接给出”内网地址”和”外网地址”两个值。外网地址通常是一个域名,端口号却不是1433,而是各厂商分配的一个特殊端口,比如3306之类的混淆端口。 此时必须以控制台显示为准。
举例,简米云RDS SQL Server的外网连接字符串一般是:
rm-xxxxxxxx.sqlserver.rds.aliyuncs.com,3433
这属于典型的”域名加端口号”格式,很多用户在百度搜索”sql服务器地址和端口号怎么填”,其实就是为了处理这类场景。
修改SQL Server默认端口号的方法
有些安全要求严格的单位,会把默认1433端口改成其他端口,比如14333或随机高位端口,这样能避免被扫描攻击,修改步骤并不复杂。
固定端口与动态端口的选择
固定端口适合对外提供稳定服务的场景,客户端配置一次即可长期使用,动态端口适合IP地址经常变动的开发环境,但客户端每次连接都通过SQL Browser服务定位,稍显繁琐。
具体修改步骤
- 打开SQL Server配置管理器。
- 选择实例的”TCP/IP”协议,右键属性。
- 在”IP地址”选项卡中,找到”IPAll”,在”TCP端口”里填入你想要的端口号,比如14333。
- 清空”TCP动态端口”里的值(如果不清空,动态端口会覆盖固定端口)。
- 重启SQL Server服务。
服务重启后,确认防火墙放行新端口,否则外部连接仍然会被拒绝。
验证修改是否生效
在命令行执行:
netstat -ano | findstr 14333
看到监听状态就说明成功。
不同工具查看服务器地址与端口号的差异
常见数据库连接工具的操作路径各不一样,但底层信息都是一样的。
SSMS登录框
打开SSMS时,服务器名称一栏可以直接输入IP,端口号,
168.1.20,1433
也可以输入主机名实例名,端口号,两种格式都支持。
Navicat
在连接配置界面,主机栏填IP或域名,端口栏单独填写,如果填错端口,Navicat会报”Connection refused”或”Can’t connect to MySQL server on …”类似的错误。
Web.config / appsettings.json
连接字符串里需要如何写端口?在.NET项目中,标准写法是:
"ConnectionStrings": {
"DefaultConnection": "Server=192.168.1.20,1433;Database=MyDB;User Id=sa;Password=123456;"
}
注意,这里的逗号是英文逗号。很多人在这个细节上栽跟头,把逗号写成漏掉,导致连接失败。
Q&A:SQL服务器地址与端口号常见问题
Q1:我通过主机名连接SQL Server失败,但用IP地址就能连,这是为什么?
主机名连接依赖DNS解析和NetBIOS,如果服务器和客户端不在同一个网段,或者DNS记录里没添加对应映射,主机名就无法解析成正确的IP,解决办法是直接使用IP地址,或者在客户端hosts文件里手动添加映射记录,服务器防火墙没放行1433端口时,IP也会连接失败,此时需要检查防火墙规则。
Q2:SQL Server Express版本默认端口和标准版一样吗?
不一样,SQL Server Express作为命名实例安装时,默认实例名是SQLEXPRESS,它的TCP端口通常不是固定的,而是动态分配,只有在配置管理器里手动启用TCP/IP并固定端口后,Express版才能以固定端口对外提供服务,很多开发者的本地数据库用的是Express版,连接时经常需要加\SQLEXPRESS后缀,就是这个原因。
Q3:一台服务器上装了多个SQL Server实例,怎么区分各个实例的端口?
每个实例的端口是独立的,登录任意一个实例,执行sys.dm_exec_connections查询,只能看到当前实例的端口,要查看全部实例的监听端口,可以在服务器命令行用netstat -ano看到所有sqlservr.exe进程对应的监听端口,再根据进程ID区分不同实例,更规范的做法是查看每个实例的错误日志,日志中会明确标注该实例监听的端口。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/712318.html





