तैनात SQL सर्वर संस्करण को निर्धारित करने के संभावित तरीके क्या हैं?
मैंने इसे SQL सर्वर सॉफ़्टवेयर का उपयोग करके करने की कोशिश की है। मैं इसे कमांड लाइन एसक्यूएल स्टेटमेंट का उपयोग करके करना चाहता हूं।
तैनात SQL सर्वर संस्करण को निर्धारित करने के संभावित तरीके क्या हैं?
मैंने इसे SQL सर्वर सॉफ़्टवेयर का उपयोग करके करने की कोशिश की है। मैं इसे कमांड लाइन एसक्यूएल स्टेटमेंट का उपयोग करके करना चाहता हूं।
जवाबों:
संस्करण को देखने के संभावित तरीके निम्नलिखित हैं:
विधि 1: SQL सर्वर के उदाहरण से कनेक्ट करें, और उसके बाद निम्न क्वेरी चलाएँ:
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: SQL सर्वर प्रबंधन स्टूडियो में ऑब्जेक्ट एक्सप्लोरर का उपयोग करके सर्वर से कनेक्ट करें। ऑब्जेक्ट एक्सप्लोरर कनेक्ट होने के बाद, यह कोष्ठक में संस्करण जानकारी दिखाएगा, साथ में उपयोगकर्ता नाम जो SQL सर्वर के विशिष्ट उदाहरण से कनेक्ट करने के लिए उपयोग किया जाता है।
विधि 3: उस उदाहरण के लिए Errorlog फ़ाइल की पहली कुछ पंक्तियों को देखें। डिफ़ॉल्ट रूप से, त्रुटि लॉग प्रोग्राम Files \ Microsoft SQL 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: )
जैसा कि आप देख सकते हैं, यह प्रविष्टि उत्पाद के बारे में सभी आवश्यक जानकारी देती है, जैसे कि संस्करण, उत्पाद स्तर, 64-बिट बनाम 32-बिट, SQL सर्वर का संस्करण और OS संस्करण जिस पर SQL सर्वर चल रहा है।
विधि 4: SQL सर्वर के उदाहरण से कनेक्ट करें, और उसके बाद निम्न क्वेरी चलाएँ:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
नोट यह क्वेरी SQL Server 2000 या बाद के संस्करण के किसी भी उदाहरण के साथ काम करती है
declare @sqlVers numeric(4,2)
select @sqlVers = left(cast(serverproperty('productversion') as varchar), 4)
क्रमशः SQL 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
यह Windows सर्वर का उपयोग कर स्थानीय सर्वर उदाहरण से कनेक्ट करने के लिए SQLCMD (SQL सर्वर के साथ आता है) का उपयोग करता है, यदि संस्करण की जांच विफल हो जाती है और @@ERROR
कमांड लाइन के रूप में ERRORLEVEL
अगर = 16 (और दूसरी पंक्ति :ExitFail
लेबल पर जाती है, तो एक त्रुटि को फेंक दें) उपर्युक्त ERRORLEVEL
है> = 1)।
Watchas, Gotchas और अधिक जानकारी
SQL 2000+ के लिए आप इस जानकारी का एक बहुत कुछ निर्धारित करने के लिए SERVERPROPERTY का उपयोग कर सकते हैं ।
एसक्यूएल 2008 + का समर्थन करता है जबकि ProductMajorVersion
और ProductMinorVersion
गुण, ProductVersion
2000 के बाद से आसपास किया गया है (याद है कि एक संपत्ति समारोह रिटर्न समर्थित नहीं है अगर NULL
)।
यदि आप पहले के संस्करणों में रुचि रखते हैं, तो आप PARSENAME
विभाजन को ProductVersion
याद रखने के लिए फ़ंक्शन का उपयोग कर सकते हैं ("भागों" को दाएं से बाएं या PARSENAME('a.b.c', 1)
रिटर्न पर गिना जाता है c
)।
यह भी याद रखें कि PARSENAME('a.b.c', 4)
रिटर्न NULL
, क्योंकि SQL 2005 और पहले केवल संस्करण संख्या में 3 भागों का उपयोग किया गया था!
तो SQL 2008+ के लिए आप बस उपयोग कर सकते हैं:
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
CAST(SERVERPROPERTY('ProductMajorVersion') AS INT) AS ProductMajorVersion,
CAST(SERVERPROPERTY ('ProductMinorVersion') AS INT) AS ProductMinorVersion;
SQL 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)
पठनीयता में सुधार के लिए एक हैक है)
तो SQL 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);
यदि आप केवल SQL 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
निर्धारित करने के लिए RTM / सपा) गुण n / सीटीपी n और देव / कक्षा / Ent / आदि क्रमशः।
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;
FYI करें मुख्य SQL संस्करण संख्याएँ हैं:
और यह सब SQL Azure के लिए भी काम करता है!
संपादित करें: आप अपने DB संगतता स्तर की जांच करना चाहते हैं क्योंकि इसे कम संगतता पर सेट किया जा सकता है।
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: )
स्रोत: sql सर्वर संस्करण की जांच कैसे करें? (विभिन्न तरीके बताए गए)