TSQL का उपयोग कर डेटाबेस के लिए SQL सर्वर के किस संस्करण की जाँच करते हैं?


जवाबों:


234

प्रयत्न

SELECT @@VERSION 

या SQL Server 2000 और इसके बाद के संस्करण के लिए पार्स करने के लिए आसान है :)

SELECT SERVERPROPERTY('productversion')
     , SERVERPROPERTY('productlevel')
     , SERVERPROPERTY('edition')

प्रेषक: http://support.microsoft.com/kb/321185


1
दूसरा मेरे लिए काम करता है, और मैं विकिपीडिया पर यह समझने के लिए जोड़ता हूं कि 8.00.xx का अर्थ है SQL सर्वर 2000
pdem


28

मुझे पता है कि यह एक पुराना पोस्ट है लेकिन मैंने मैट रोजिश द्वारा पोस्ट किए गए उत्तर में उल्लिखित लिंक (जो 2013-12-03 तक मृत है) में पाया गया कोड अपडेट किया है :

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'

14

SQL Server 2000 और इसके बाद के संस्करण के लिए, मैं जो जवाब के निम्नलिखित पार्सिंग पसंद करता हूं:

declare @sqlVers numeric(4,2)
select @sqlVers = left(cast(serverproperty('productversion') as varchar), 4)

परिणाम इस प्रकार है:

परिणाम सर्वर संस्करण
8.00 SQL 2000
9.00 एसक्यूएल 2005
10.00 एसक्यूएल 2008
10.50 SQL 2008R2
11.00 एसक्यूएल 2012
12.00 एसक्यूएल 2014

यहाँ संस्करण संख्याओं की मूल सूची , या यहाँ Microsoft से संपूर्ण सूची ।


मुझे यह पसंद है, सर्वर संस्करणों में अच्छा, सरल और पुन: प्रयोज्य। मैं ऊपर के एक थोड़ा संशोधित संस्करण का उपयोग किया: select cast(serverproperty('productversion') as varchar) as [result]। मेरा कहना यह है कि मैं ADO.NET के माध्यम से उपरोक्त निष्पादित कर सकता हूं ExecuteScalarऔर फिर परिणाम स्ट्रिंग को System.Versionऑब्जेक्ट के रूप में पार्स कर सकता हूं । इसके अलावा, इसे न्यूमेरिक में देने से संस्करण संख्याओं के अलग-अलग अर्थ मिलते हैं, जब यह शून्य और संस्करण खंड अंक गणना में पीछे आता है, जबकि एक स्ट्रिंग Versionको प्रत्येक संस्करण घटक की स्थिरता को खोए बिना एक वैध वस्तु पर पार्स किया जा सकता है ।
Ivaylo Slavov

4
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

3

यदि सर्वर 2005 या उसके बाद की है, तो मैं परीक्षण के लिए उपयोग की जाने वाली स्क्रिप्ट का एक सा है

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

नोट: मूल उत्तर से अद्यतन (टिप्पणी देखें)


बस यह पाया गया कि यह sql 2008 में काम नहीं करता है क्योंकि '10' '9' से कम है। आप 8, 9, 10 या जो भी आपको न्यूनतम मूल्य के रूप में परीक्षण करने की आवश्यकता है, का उपयोग करने के लिए अद्यतन किए गए उत्तर में मान बदल सकते हैं
ब्रूस चैपमैन

3

एक और विस्तारित संग्रहित प्रक्रिया है जिसका उपयोग संस्करण जानकारी देखने के लिए किया जा सकता है:

exec [master].sys.[xp_msver]

2

जो के पोस्ट में जुड़ा हुआ KB आलेख यह निर्धारित करने के लिए बढ़िया है कि किसी भी संस्करण के लिए कौन से सर्विस पैक लगाए गए हैं। उन्हीं लाइनों के साथ, यह KB आलेख विशिष्ट हॉटफ़िक्स और संचयी अद्यतनों के लिए संस्करण संख्याओं को मैप करता है, लेकिन यह केवल SQL05 SP2 और अप पर लागू होता है।


1

इसे इस्तेमाल करे:

if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10'
BEGIN

1
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

1

एकल चयन में केवल प्रमुख SQL सर्वर संस्करण प्राप्त करना:

SELECT  SUBSTRING(ver, 1, CHARINDEX('.', ver) - 1)
FROM (SELECT CAST(serverproperty('ProductVersion') AS nvarchar) ver) as t

8SQL 2000, 9SQL 2005 और इतने पर (2012 तक परीक्षण) के लिए रिटर्न ।




0

यदि आप चाहते हैं कि टी-एसक्यूएल कारणों के लिए प्रमुख संस्करण है, तो निम्नलिखित आपको वर्ष 2000 या बाद के लिए एसक्यूएल सर्वर संस्करण का वर्ष देता है।

SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)

यह कोड SQL सर्वर के विभिन्न संस्करणों के लिए अतिरिक्त रिक्त स्थान और टैब को इनायत से संभालता है।


0

इसे इस्तेमाल करे:

SELECT @@VERSION[server], SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

-1

इसे इस्तेमाल करे:

SELECT
    'the sqlserver is ' + substring(@@VERSION, 21, 5) AS [sql version]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.