মোতায়েন এসকিউএল সার্ভার সংস্করণ নির্ধারণের সম্ভাব্য উপায়গুলি কী কী?
আমি এসকিউএল সার্ভার সফ্টওয়্যার ব্যবহার করে এটি করার চেষ্টা করেছি। কমান্ড লাইন এসকিউএল স্টেটমেন্ট ব্যবহার করে এটি করতে চাই।
মোতায়েন এসকিউএল সার্ভার সংস্করণ নির্ধারণের সম্ভাব্য উপায়গুলি কী কী?
আমি এসকিউএল সার্ভার সফ্টওয়্যার ব্যবহার করে এটি করার চেষ্টা করেছি। কমান্ড লাইন এসকিউএল স্টেটমেন্ট ব্যবহার করে এটি করতে চাই।
উত্তর:
নিম্নলিখিতটি সংস্করণটি দেখার সম্ভাব্য উপায়গুলি:
পদ্ধতি 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 এর কোনও উদাহরণ বা পরবর্তী সংস্করণের সাথে কাজ করে
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
টি এল; ডিআর
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;
এফওয়াইআই হ'ল প্রধান এসকিউএল সংস্করণ নম্বরগুলি হ'ল :
এবং এটি সমস্ত এসকিউএল অ্যাজুরির জন্যও কাজ করে!
সম্পাদনা করা: আপনি আপনার ডিবি সামঞ্জস্যতা স্তরটিও যাচাই করতে চাইতে পারেন কারণ এটি একটি কম সামঞ্জস্যের উপর সেট করা যেতে পারে।
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)
সহজভাবে ব্যবহার করুন
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: )
উত্স: এসকিএল সার্ভার সংস্করণটি কীভাবে চেক করবেন? (বিভিন্নভাবে ব্যাখ্যা করা হয়েছে)