Wie überprüfen Sie, welche Version von SQL Server für eine Datenbank mit TSQL?
-
09-06-2019 - |
Frage
Gibt es ein System gespeicherte Prozedur die Version # zu bekommen?
Lösung
Versuchen
SELECT @@VERSION
oder für SQL Server 2000 und höher die folgende ist einfacher zu analysieren :)
SELECT SERVERPROPERTY('productversion')
, SERVERPROPERTY('productlevel')
, SERVERPROPERTY('edition')
Andere Tipps
SELECT @@ VERSION
Ich weiß, dass dies ein älterer Beitrag, aber ich den Code in dem link (die als von 2013.12.03 tot ist) in der beantworten geschrieben Matt von Rogish :
DECLARE @ver nvarchar(128)
SET @ver = CAST(serverproperty('ProductVersion') AS nvarchar)
SET @ver = SUBSTRING(@ver, 1, CHARINDEX('.', @ver) - 1)
IF ( @ver = '7' )
SELECT 'SQL Server 7'
ELSE IF ( @ver = '8' )
SELECT 'SQL Server 2000'
ELSE IF ( @ver = '9' )
SELECT 'SQL Server 2005'
ELSE IF ( @ver = '10' )
SELECT 'SQL Server 2008/2008 R2'
ELSE IF ( @ver = '11' )
SELECT 'SQL Server 2012'
ELSE IF ( @ver = '12' )
SELECT 'SQL Server 2014'
ELSE IF ( @ver = '13' )
SELECT 'SQL Server 2016'
ELSE IF ( @ver = '14' )
SELECT 'SQL Server 2017'
ELSE
SELECT 'Unsupported SQL Server Version'
Für SQL Server 2000 und höher, ziehe ich die folgende Analyse von Joe Antwort:
declare @sqlVers numeric(4,2)
select @sqlVers = left(cast(serverproperty('productversion') as varchar), 4)
Gibt Ergebnisse wie folgt:
Result Server Version 8.00 SQL 2000 9.00 SQL 2005 10.00 SQL 2008 10.50 SQL 2008R2 11.00 SQL 2012 12.00 SQL 2014
Grund Liste der Versionsnummern hier oder erschöpfende Liste von Microsoft hier .
CREATE FUNCTION dbo.UFN_GET_SQL_SEVER_VERSION
(
)
RETURNS sysname
AS
BEGIN
DECLARE @ServerVersion sysname, @ProductVersion sysname, @ProductLevel sysname, @Edition sysname;
SELECT @ProductVersion = CONVERT(sysname, SERVERPROPERTY('ProductVersion')),
@ProductLevel = CONVERT(sysname, SERVERPROPERTY('ProductLevel')),
@Edition = CONVERT(sysname, SERVERPROPERTY ('Edition'));
--see: http://support2.microsoft.com/kb/321185
SELECT @ServerVersion =
CASE
WHEN @ProductVersion LIKE '8.00.%' THEN 'Microsoft SQL Server 2000'
WHEN @ProductVersion LIKE '9.00.%' THEN 'Microsoft SQL Server 2005'
WHEN @ProductVersion LIKE '10.00.%' THEN 'Microsoft SQL Server 2008'
WHEN @ProductVersion LIKE '10.50.%' THEN 'Microsoft SQL Server 2008 R2'
WHEN @ProductVersion LIKE '11.0%' THEN 'Microsoft SQL Server 2012'
WHEN @ProductVersion LIKE '12.0%' THEN 'Microsoft SQL Server 2014'
END
RETURN @ServerVersion + N' ('+@ProductLevel + N'), ' + @Edition + ' - ' + @ProductVersion;
END
GO
Es gibt eine andere erweiterte gespeicherte Prozeduren, die verwendet werden können, die Version Informationen zu sehen:
exec [master].sys.[xp_msver]
Hier ist ein bisschen Skript, das ich zum Testen verwenden, wenn ein Server 2005 oder höher ist
declare @isSqlServer2005 bit
select @isSqlServer2005 = case when CONVERT(int, SUBSTRING(CONVERT(varchar(15), SERVERPROPERTY('productversion')), 0, CHARINDEX('.', CONVERT(varchar(15), SERVERPROPERTY('productversion'))))) < 9 then 0 else 1 end
select @isSqlServer2005
Hinweis: von den ursprünglichen Antwort aktualisiert (siehe Kommentar)
Der Artikel KB verknüpft in Joes Post ist für die Bestimmung, welcher Service Pack für jede Version installiert wurde. Entlang den gleichen Linien, dieser KB-Artikel Versionsnummern zuordnet spezifische Hotfixes und kumulativen Updates, aber es gilt nur SP2 SQL05 und höher.
Versuchen Sie folgendes:
if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10'
BEGIN
SELECT
@@SERVERNAME AS ServerName,
CASE WHEN LEFT(CAST(serverproperty('productversion') as char), 1) = 9 THEN '2005'
WHEN LEFT(CAST(serverproperty('productversion') as char), 2) = 10 THEN '2008'
WHEN LEFT(CAST(serverproperty('productversion') as char), 2) = 11 THEN '2012'
END AS MajorVersion,
SERVERPROPERTY ('productlevel') AS MinorVersion,
SERVERPROPERTY('productversion') AS FullVersion,
SERVERPROPERTY ('edition') AS Edition
nur die wichtigste SQL-Server-Version in einem einzelnen auswählen Ersten:
SELECT SUBSTRING(ver, 1, CHARINDEX('.', ver) - 1)
FROM (SELECT CAST(serverproperty('ProductVersion') AS nvarchar) ver) as t
Gibt 8
für SQL 2000, 9
für SQL 2005 und so weiter (getestet bis 2012).
Versuchen
SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber
Weitere Informationen finden Sie unter: Abfragen von Version / Ausgabe info
select substring(@@version,0,charindex(convert(varchar,SERVERPROPERTY('productversion')) ,@@version)+len(convert(varchar,SERVERPROPERTY('productversion'))))
Wenn Sie nur die Hauptversion für T-SQL Gründen wollen, die Folgenden finden Sie das Jahr der SQL Server-Version für 2000 oder höher.
SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)
Dieser Code ordnungsgemäß behandelt die zusätzlichen Leerzeichen und Tabulatoren für verschiedene Versionen von SQL Server.
Versuchen Sie folgendes:
SELECT @@VERSION[server], SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Versuchen Sie folgendes:
SELECT
'the sqlserver is ' + substring(@@VERSION, 21, 5) AS [sql version]