উত্তর:
চেষ্টা
SELECT @@VERSION
বা এসকিউএল সার্ভার 2000 এবং এর উপরের জন্য পার্স করা আরও সহজ :)
SELECT SERVERPROPERTY('productversion')
, SERVERPROPERTY('productlevel')
, SERVERPROPERTY('edition')
আমি জানি এটি একটি পুরানো পোস্ট তবে আমি ম্যাট রোগিশ পোস্ট করা উত্তরে উল্লিখিত লিঙ্কটিতে পাওয়া কোডটি (যা ২০১২-১২-০৩ খ্রিস্টাব্দে মারা গেছে) আপডেট করেছি :
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'
এসকিউএল সার্ভার 2000 এবং তারপরের জন্য, আমি জোয়ের উত্তরের নিম্নলিখিত পার্সিংটি পছন্দ করি:
declare @sqlVers numeric(4,2)
select @sqlVers = left(cast(serverproperty('productversion') as varchar), 4)
নীচে ফলাফল দেয়:
সার্ভার সংস্করণ ফলাফল 8.00 এসকিউএল 2000 9.00 এসকিউএল 2005 10.00 এসকিউএল 2008 10.50 এসকিউএল 2008 আর 2 11.00 এসকিউএল 2012 12.00 এসকিউএল 2014
এখানে সংস্করণ নম্বরগুলির প্রাথমিক তালিকা , বা মাইক্রোসফ্ট থেকে সম্পূর্ণ তালিকা এখানে ।
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
দ্রষ্টব্য: মূল উত্তর থেকে আপডেট হয়েছে (মন্তব্য দেখুন)
জো এর পোস্টে লিঙ্কযুক্ত কেবি নিবন্ধটি কোনও সংস্করণের জন্য কোন পরিষেবা প্যাকগুলি ইনস্টল করা হয়েছে তা নির্ধারণের জন্য দুর্দান্ত। এই একই লাইনের পাশাপাশি, এই কেবি নিবন্ধটি নির্দিষ্ট হটফিক্স এবং সংযোজনীয় আপডেটগুলিতে সংস্করণ নম্বরগুলি মানচিত্র করে তবে এটি কেবল এসকিউএল 5 এসপি 2 এবং তার বেশি ক্ষেত্রে প্রযোজ্য।
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)
এই কোডটি এসকিউএল সার্ভারের বিভিন্ন সংস্করণের জন্য অতিরিক্ত স্থান এবং ট্যাবগুলি গ্রেফতার করে।