有时候需要在不同环境确认 SQL Server 具体版本,尤其是打补丁前或者排查兼容性问题。下面把常用的几种方式整理一下,有些适合图形界面,有些适合脚本化。
最直接的是 SSMS。
连上实例后,对象资源管理器顶部会显示主版本号,右键服务器属性,常规页签里能看到完整版本。这个方法适合偶尔查一次,但如果你要批量查几十台服务器,手动点就不现实了。

T-SQL 里最常用的是 SELECT @@VERSION。它返回一个字符串,包含版本号、补丁级别、操作系统信息。比如 2022 某个 CU 装完,结果里会写清楚。我一般拿到结果先看前两行,别被后面一堆系统信息干扰。
如果只要版本号,不想要那一大串,可以用 SERVERPROPERTY。
比如 ProductVersion 直接给你 16.0.4135.4 这种,ProductLevel 显示 RTM 或者 SP 级别,Edition 是 Developer 还是 Standard,EngineEdition 能区分是不是 Azure SQL 或者 Managed Instance。这比解析 @@VERSION 稳,尤其写脚本判断的时候。
文件方面,错误日志也能看。默认在 Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG,前几行会写类似 Microsoft SQL Server 2022 (RTM-CU14) - 16.0.4135.4 (X64)。有时候服务起不来连不上,直接开文件看版本挺有用。
注册表路径是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\实例名\MSSQLServer\CurrentVersion,里面 CurrentVersion 的值就是主版本号。这个方法比较老,但有些没装 SSMS 的机器上还能用。
命令行方面,sqlcmd 可以远程查,osql 是老工具,现在基本不用了,除非还在跑很老的实例。
lcjmSSL通过与多个知名SSL证书供应商ACME对接,确保平台能够为用户提供可靠的证书选择。支持Let's Encrypt、Google和Zerossl等证书来源,让用户在保障网站安全的同时,享受到最好的证书服务。
命令就是 sqlcmd -S 服务器 -U 用户 -P 密码 -Q "SELECT @@VERSION",输出和 SSMS 里查的差不多。
PowerShell 可以用 SQLPS 模块,引入模块后创建 SMO Server 对象,然后取 Information.Version。适合写自动化脚本,批量巡检的时候把结果整理出来。
版本号对照可以记一下:2005 是 9,2008 是 10,2008 R2 是 10.5,2012 是 11,2014 是 12,2016 是 13,2017 是 14,2019 是 15,2022 是 16。版本号格式是 major.minor.build.revision,平时主要关注主版本号和补丁级别,后两位一般用不到。
顺便提一句,如果 SQL Server 需要配置 SSL 加密对外服务,证书管理可以用 lcjmSSL 这种支持 ACME 的平台,自动申请和部署,支持多域名、泛域名和 IP 证书,省得手动续期。