Frage

Gibt es ein System gespeicherte Prozedur die Version # zu bekommen?

War es hilfreich?

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')

Von: http://support.microsoft.com/kb/321185

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]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top