जवाबों:
प्रयत्न
SELECT @@VERSION
या SQL Server 2000 और इसके बाद के संस्करण के लिए पार्स करने के लिए आसान है :)
SELECT SERVERPROPERTY('productversion')
, SERVERPROPERTY('productlevel')
, SERVERPROPERTY('edition')
मुझे पता है कि यह एक पुराना पोस्ट है लेकिन मैंने मैट रोजिश द्वारा पोस्ट किए गए उत्तर में उल्लिखित लिंक (जो 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'
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
को प्रत्येक संस्करण घटक की स्थिरता को खोए बिना एक वैध वस्तु पर पार्स किया जा सकता है ।
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
यदि सर्वर 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
नोट: मूल उत्तर से अद्यतन (टिप्पणी देखें)
जो के पोस्ट में जुड़ा हुआ KB आलेख यह निर्धारित करने के लिए बढ़िया है कि किसी भी संस्करण के लिए कौन से सर्विस पैक लगाए गए हैं। उन्हीं लाइनों के साथ, यह KB आलेख विशिष्ट हॉटफ़िक्स और संचयी अद्यतनों के लिए संस्करण संख्याओं को मैप करता है, लेकिन यह केवल SQL05 SP2 और अप पर लागू होता है।
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
प्रयत्न
SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber
अधिक जानकारी के लिए देखें: संस्करण / संस्करण जानकारी के लिए क्वेरी करना
select substring(@@version,0,charindex(convert(varchar,SERVERPROPERTY('productversion')) ,@@version)+len(convert(varchar,SERVERPROPERTY('productversion'))))
यदि आप चाहते हैं कि टी-एसक्यूएल कारणों के लिए प्रमुख संस्करण है, तो निम्नलिखित आपको वर्ष 2000 या बाद के लिए एसक्यूएल सर्वर संस्करण का वर्ष देता है।
SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)
यह कोड SQL सर्वर के विभिन्न संस्करणों के लिए अतिरिक्त रिक्त स्थान और टैब को इनायत से संभालता है।