কীভাবে এসকিউএল সার্ভার সংস্করণ চেক করবেন


125

মোতায়েন এসকিউএল সার্ভার সংস্করণ নির্ধারণের সম্ভাব্য উপায়গুলি কী কী?

আমি এসকিউএল সার্ভার সফ্টওয়্যার ব্যবহার করে এটি করার চেষ্টা করেছি। কমান্ড লাইন এসকিউএল স্টেটমেন্ট ব্যবহার করে এটি করতে চাই।



উত্তর:


227

নিম্নলিখিতটি সংস্করণটি দেখার সম্ভাব্য উপায়গুলি:

পদ্ধতি 1: এসকিউএল সার্ভারের উদাহরণের সাথে সংযুক্ত করুন এবং তারপরে নিম্নলিখিত কোয়েরিটি চালান:

Select @@version

এই ক্যোয়ারির ফলাফলের উদাহরণ নিম্নরূপ:

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)   Mar 29 2009 
10:11:52   Copyright (c) 1988-2008 Microsoft Corporation  Express 
Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

পদ্ধতি 2: এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে অবজেক্ট এক্সপ্লোরার ব্যবহার করে সার্ভারের সাথে সংযুক্ত করুন। অবজেক্ট এক্সপ্লোরার সংযুক্ত হওয়ার পরে এটি এসকিউএল সার্ভারের নির্দিষ্ট উদাহরণের সাথে সংযোগ করতে ব্যবহৃত ব্যবহারকারীর নামের সাথে প্রথম বন্ধনীতে সংস্করণ তথ্য প্রদর্শন করবে।

পদ্ধতি 3: সেই উদাহরণের জন্য ত্রুটিযুক্ত ফাইলের প্রথম কয়েকটি লাইনটি দেখুন। ডিফল্টরূপে, ত্রুটি লগটি প্রোগ্রাম ফাইলগুলি located মাইক্রোসফ্ট এসকিউএল Server\MSSQL.n\MSSQL\LOG\ERRORLOGএবং ERRORLOG.nফাইলগুলিতে থাকে। এন্ট্রি নিম্নলিখিত অনুরূপ হতে পারে:

2011-03-27 22:31:33.50 Server      Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)                 Mar 29 2009 10:11:52                 Copyright (c) 1988-2008 Microsoft Corporation                Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

আপনি দেখতে পাচ্ছেন যে এই এন্ট্রিটি পণ্য সম্পর্কে সমস্ত প্রয়োজনীয় তথ্য দেয় যেমন সংস্করণ, পণ্যের স্তর, -৪-বিট বনাম 32-বিট, এসকিউএল সার্ভারের সংস্করণ এবং এসএসকিউএল সার্ভার যে ওএস সংস্করণে চলছে সেগুলি সরবরাহ করে।

পদ্ধতি 4: এসকিউএল সার্ভারের দৃষ্টান্তের সাথে সংযুক্ত করুন এবং তারপরে নিম্নলিখিত কোয়েরিটি চালান:

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

দ্রষ্টব্য এই কোয়েরিটি এসকিউএল সার্ভার 2000 এর কোনও উদাহরণ বা পরবর্তী সংস্করণের সাথে কাজ করে


6
আমি পদ্ধতিটি 1 এর চেয়ে 4 টি আরও নির্ভরযোগ্য হিসাবে খুঁজে পেয়েছি - আমার কাছে এমন সার্ভার রয়েছে যা কোনও সার্ভিস প্যাক সঠিকভাবে ইনস্টল করতে পারেনি যেখানে পদ্ধতি 1 এবং পদ্ধতি 4 বিভিন্ন ফলাফল পেয়েছিল, তবে পদ্ধতি 4টি সঠিক ছিল।
কাগনর

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

এসকিউএল 2000, 2005, 2008 এবং 2008R2 এর জন্য যথাক্রমে 8.00, 9.00, 10.00 এবং 10.50 দেয়।

এছাড়াও, সিস্টেম বর্ধিত পদ্ধতি চেষ্টা করে দেখুন xp_msver। আপনি এই সঞ্চিত পদ্ধতিটিকে কল করতে পারেন

exec master..xp_msver

2

টি এল; ডিআর

SQLCMD -S (LOCAL) -E -V 16 -Q "IF(ISNULL(CAST(SERVERPROPERTY('ProductMajorVersion') AS INT),0)<11) RAISERROR('You need SQL 2012 or later!',16,1)"
IF ERRORLEVEL 1 GOTO :ExitFail

এটি এসকিউএলসিএমডি ব্যবহার করে (এসকিউএল সার্ভারের সাথে আসে) স্থানীয় সার্ভারের সাথে উইন্ডোজ প্রমাণীকরণের সাহায্যে সংযোগ স্থাপন করতে, কোনও সংস্করণ চেক ব্যর্থ হলে একটি ত্রুটি ফেলুন এবং > = 16 যদি @@ERRORকমান্ড লাইন হিসাবে ফিরে আসে ERRORLEVEL(এবং দ্বিতীয় লাইনটি :ExitFailলেবেলে যায় তবে পূর্বোক্তটি ERRORLEVELহল> = 1)।

ওয়াচচস, গটচস এবং আরও তথ্য

এসকিউএল 2000+ এর জন্য আপনি এই তথ্যটি অনেকগুলি নির্ধারণ করতে সার্ভার প্রপার্টি ব্যবহার করতে পারেন ।

এসকিউএল ২০০++ ProductMajorVersion& ProductMinorVersionবৈশিষ্ট্যগুলিকে সমর্থন করে , ProductVersionযদিও ২০০০ সাল থেকে চলেছে (মনে রাখবেন যে কোনও সম্পত্তি যদি ফাংশন সমর্থন করে না তবে ফেরত দেয় NULL)।

আপনি যদি পূর্ববর্তী সংস্করণগুলিতে আগ্রহী হন তবে আপনি PARSENAMEফাংশনটি বিভক্ত করতে ব্যবহার করতে পারেন ProductVersion("অংশগুলি মনে করে" ডান থেকে বামে অর্থাৎ PARSENAME('a.b.c', 1)রিটার্নগুলি গণনা করা হয় c)।

সেই PARSENAME('a.b.c', 4)রিটার্নগুলিও মনে রাখবেন NULL, কারণ এসকিউএল 2005 এবং এর আগে কেবল সংস্করণ সংখ্যায় 3 অংশ ব্যবহৃত হয়েছিল!

সুতরাং এসকিউএল ২০০+ এর জন্য আপনি কেবল ব্যবহার করতে পারেন:

SELECT
    SERVERPROPERTY('ProductVersion') AS ProductVersion,
    CAST(SERVERPROPERTY('ProductMajorVersion')  AS INT) AS ProductMajorVersion,
    CAST(SERVERPROPERTY ('ProductMinorVersion') AS INT) AS ProductMinorVersion;

এসকিউএল 2000-2005 এর জন্য আপনি ব্যবহার করতে পারেন:

SELECT
    SERVERPROPERTY('ProductVersion') AS ProductVersion,
    CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 3 ELSE 4 END) AS INT) AS ProductVersion_Major,
    CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 2 ELSE 3 END) AS INT) AS ProductVersion_Minor,
    CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 1 ELSE 2 END) AS INT) AS ProductVersion_Revision,
    CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 0 ELSE 1 END) AS INT) AS ProductVersion_Build;

( PARSENAME(...,0)পঠনযোগ্যতা উন্নত করতে একটি হ্যাক)

সুতরাং একটি এসকিউএল 2000+ সংস্করণ পরীক্ষা করা হবে:

IF (CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 3 ELSE 4 END) AS INT) < 10) -- SQL2008
OR (
    (CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 3 ELSE 4 END) AS INT) = 10) -- SQL2008
AND (CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME), CASE WHEN SERVERPROPERTY('ProductVersion') IS NULL THEN 2 ELSE 1 END) AS INT) < 5)  -- R2 (this may need to be 50)
   )
    RAISERROR('You need SQL 2008R2 or later!', 16, 1);

আপনি কেবল এসকিউএল 2008+-তে কেবল আগ্রহী যদি এটি পূর্ববর্তী সংস্করণগুলির জন্য SERVERPROPERTY('ProductMajorVersion')ফেরত NULLদেয় তবে এটি আপনি ব্যবহার করতে পারেন তবে এটি অনেক সহজ :

IF (ISNULL(CAST(SERVERPROPERTY('ProductMajorVersion') AS INT), 0) < 11) -- SQL2012
    RAISERROR('You need SQL 2012 or later!', 16, 1);

এবং আপনি যথাক্রমে আরটিএম / এসপি এন / সিটিপি এন এবং দেব / এসটিডি / এন্ট / ইত্যাদি নির্ধারণ করতে ProductLevelএবং Edition(বা EngineEdition) বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন ।

SELECT
    CAST(SERVERPROPERTY('ProductVersion') AS SYSNAME) AS ProductVersion,
    CAST(SERVERPROPERTY('ProductLevel') AS SYSNAME)   AS ProductLevel,
    CAST(SERVERPROPERTY('Edition') AS SYSNAME)        AS Edition,
    CAST(SERVERPROPERTY('EngineEdition') AS INT)      AS EngineEdition;

এফওয়াইআই হ'ল প্রধান এসকিউএল সংস্করণ নম্বরগুলি হ'ল :

  • 8 = এসকিউএল 2000
  • 9 = এসকিউএল 2005
  • 10 = এসকিউএল 2008 (এবং 10.5 = এসকিউএল ২০০৮ আর ২)
  • 11 = এসকিউএল 2012
  • 12 = এসকিউএল 2014
  • 13 = এসকিউএল 2016
  • 14 = এসকিউএল 2017

এবং এটি সমস্ত এসকিউএল অ্যাজুরির জন্যও কাজ করে!

সম্পাদনা করা: আপনি আপনার ডিবি সামঞ্জস্যতা স্তরটিও যাচাই করতে চাইতে পারেন কারণ এটি একটি কম সামঞ্জস্যের উপর সেট করা যেতে পারে।

IF EXISTS (SELECT * FROM sys.databases WHERE database_id=DB_ID() AND [compatibility_level] < 110)
    RAISERROR('Database compatibility level must be SQL2008R2 or later (110)!', 16, 1)

1

সংস্করণটি সন্ধান করতে আমি যা করেছি তা এখানে সংস্করণটি সন্ধান করতে আমি যা করেছি তা এখানে: কেবল লিখুন SELECT @@versionএবং এটি আপনাকে সংস্করণ দেবে।


1

সহজভাবে ব্যবহার করুন

SELECT @@VERSION

নমুনা আউটপুট

Microsoft SQL Server 2012 - 11.0.2100.60 (X64) 
Feb 10 2012 19:39:15 
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

উত্স: এসকিএল সার্ভার সংস্করণটি কীভাবে চেক করবেন? (বিভিন্নভাবে ব্যাখ্যা করা হয়েছে)


0
select charindex(  'Express',@@version)

যদি এই মান 0 হয় তবে এটি এক্সপ্রেস সংস্করণ নয়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.