在維運、遷移、相容性測試時,常需快速確認目標 SQL Server 執行個體的確切版本。本文整理 6 種方法,從 T-SQL 查詢、系統檢視、命令列工具到登錄檔,涵蓋 SQL Server 2000 至最新版本,並說明各方法適用情境與注意事項。
SELECT @@VERSION;
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Desktop Engine on Windows NT 5.2 (Build 3790: Service Pack 2)
Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Dec 10 2010 10:42:52 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
Microsoft SQL Server 2019 (RTM-CU15) (KB5018782) - 15.0.4198.2 (X64) Jan 14 2023 08:30:12 Copyright (c) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2019 Datacenter 10.0 (Build 17763: )
| 部分 | 說明 |
|---|---|
| 版本年份 | 2000 / 2005 / 2008 / 2012 / 2014 / 2016 / 2017 / 2019 / 2022 |
| Build Number | 8.00.xxxx=2000, 9.00.xxxx=2005, 10.00.xxxx=2008, 10.50.xxxx=2008 R2, 11.00.xxxx=2012, 12.00.xxxx=2014, 13.00.xxxx=2016, 14.00.xxxx=2017, 15.00.xxxx=2019, 16.00.xxxx=2022 |
| 平台 | (Intel X86) = 32-bit, (X64) = 64-bit, (IA64) = Itanium |
| 版本 | Enterprise/Standard/Developer/Express/Web/Workgroup |
| 作業系統 | Windows 版本與 Service Pack |
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion, -- 如 15.0.4198.2
SERVERPROPERTY('ProductLevel') AS ProductLevel, -- RTM / SP1 / SP2 / CU...
SERVERPROPERTY('Edition') AS Edition, -- Enterprise/Standard/Express...
SERVERPROPERTY('EngineEdition') AS EngineEdition, -- 2=Standard, 3=Enterprise, 4=Express, 5=SQL Database, 8=Managed Instance
SERVERPROPERTY('ProductMajorVersion') AS MajorVersion, -- 15 (2019), 14 (2017), 13 (2016)...
SERVERPROPERTY('ProductMinorVersion') AS MinorVersion,
SERVERPROPERTY('ProductBuild') AS BuildNumber,
SERVERPROPERTY('ProductBuildType') AS BuildType, -- RTM / SP / CU / GDR
SERVERPROPERTY('ProductUpdateLevel') AS UpdateLevel, -- CU 版次
SERVERPROPERTY('ProductUpdateReference') AS UpdateRef; -- KB 編號
IF 判斷、動態 SQL、應用程式解析。EngineEdition 可區分雲端版本(Azure SQL Database = 5, Managed Instance = 8)。原文提到的 sys.servers 僅能區分 2000 vs 2005+。更完整的物件對應表:
| 物件 | 引入版本 | 用途 |
|---|---|---|
| sys.servers | 2005 | 連結伺服器資訊,2000 無此檢視 |
| sys.dm_os_wait_stats | 2005 | DMV 基礎,2000 僅有 sysprocesses |
| sys.partitions | 2005 | 分區/索引統計,2000 用 sysindexes |
| sys.sequences | 2012 | Sequence 物件 |
| sys.column_store_segments | 2012 | Columnstore 索引 |
| sys.external_tables | 2016 | PolyBase 外部表 |
| sys.graph_edges / sys.graph_nodes | 2017 | 圖形資料庫 |
| sys.ledger_tables | 2022 | 帳本資料表 |
IF OBJECT_ID('sys.ledger_tables') IS NOT NULL PRINT 'SQL Server 2022+';
ELSE IF OBJECT_ID('sys.graph_edges') IS NOT NULL PRINT 'SQL Server 2017+';
ELSE IF OBJECT_ID('sys.external_tables') IS NOT NULL PRINT 'SQL Server 2016+';
ELSE IF OBJECT_ID('sys.sequences') IS NOT NULL PRINT 'SQL Server 2012+';
ELSE IF OBJECT_ID('sys.dm_os_wait_stats') IS NOT NULL PRINT 'SQL Server 2005+';
ELSE PRINT 'SQL Server 2000 or earlier';
sqlcmd -S localhost -E -Q "SELECT @@VERSION"
osql -S localhost -E -Q "SELECT @@VERSION" -- SQL 2000/2005 相容
sc query MSSQLSERVER
sc query "MSSQL$SQLEXPRESS" -- 具名執行個體
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null
$srv = New-Object Microsoft.SqlServer.Management.Smo.Server 'localhost'
$srv.Information.Version # 15.0.4198.2
$srv.Information.VersionString # 2019
$srv.Information.Edition # Developer Edition (64-bit)
路徑:HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\Setup(路徑含版本代碼)
| 版本 | 登錄路徑關鍵字 | 版本值 |
|---|---|---|
| 2000 | MSSQLServer\CurrentVersion | 8.00.xxxx |
| 2005 | MSSQL.1\Setup | 9.00.xxxx |
| 2008 | MSSQL10.MSSQLSERVER\Setup | 10.00.xxxx |
| 2008 R2 | MSSQL10_50.MSSQLSERVER\Setup | 10.50.xxxx |
| 2012 | MSSQL11.MSSQLSERVER\Setup | 11.00.xxxx |
| 2014 | MSSQL12.MSSQLSERVER\Setup | 12.00.xxxx |
| 2016 | MSSQL13.MSSQLSERVER\Setup | 13.00.xxxx |
| 2017 | MSSQL14.MSSQLSERVER\Setup | 14.00.xxxx |
| 2019 | MSSQL15.MSSQLSERVER\Setup | 15.00.xxxx |
| 2022 | MSSQL16.MSSQLSERVER\Setup | 16.00.xxxx |
查詢 PatchLevel 或 Version 值即可得知確切 Build。
檔案:MSSQL\Log\ERRORLOG(或 ERRORLOG.1)
2023-01-15 10:30:00.00 Server Microsoft SQL Server 2019 (RTM-CU15) (KB5018782) - 15.0.4198.2 (X64)
2023-01-15 10:30:00.00 Server Copyright (c) 2019 Microsoft Corporation
2023-01-15 10:30:00.00 Server Developer Edition (64-bit) on Windows Server 2019 Datacenter 10.0 (Build 17763: )
首行即含完整版本資訊,服務掛掉時仍可檢視。
| 產品版本 | Major.Minor | Build 範圍 | 主流支援結束 | 延伸支援結束 |
|---|---|---|---|---|
| SQL Server 2000 | 8.0 | 8.00.xxxx | 2008-04-08 | 2013-04-09 |
| SQL Server 2005 | 9.0 | 9.00.xxxx | 2011-04-12 | 2016-04-12 |
| SQL Server 2008 | 10.0 | 10.00.xxxx | 2014-07-08 | 2019-07-09 |
| SQL Server 2008 R2 | 10.5 | 10.50.xxxx | 2014-07-08 | 2019-07-09 |
| SQL Server 2012 | 11.0 | 11.00.xxxx | 2017-07-11 | 2022-07-12 |
| SQL Server 2014 | 12.0 | 12.00.xxxx | 2019-07-09 | 2024-07-09 |
| SQL Server 2016 | 13.0 | 13.00.xxxx | 2021-07-13 | 2026-07-14 |
| SQL Server 2017 | 14.0 | 14.00.xxxx | 2022-10-11 | 2027-10-12 |
| SQL Server 2019 | 15.0 | 15.00.xxxx | 2025-01-07 | 2030-01-08 |
| SQL Server 2022 | 16.0 | 16.00.xxxx | 2028-01-11 | 2033-01-11 |
SERVERPROPERTY 寫入巡檢資料表,集中管理數百台執行個體版本。COMPATIBILITY_LEVEL 可設為舊版本(如 100=2008),但引擎版本仍為新版。勿混淆。Edition 含 "Express" 字樣,EngineEdition = 4,功能受限(無 Agent、最大 1 GB 記憶體/10 GB 資料/1 CPU)。SERVERPROPERTY('EngineEdition') IN (5,8) 表示雲端服務,無法存取作業系統層面資源。掌握上述方法,無論在 SSMS、應用程式、自動化腳本、離線維護、災難復原現場,都能在幾秒內精準識別 SQL Server 版本,避免相容性問題與錯誤部署。