คุณจะค้นหารุ่น / รุ่นของ SQL Server โดยไม่ติดตั้ง SSMS ได้อย่างไร


20

จะทราบได้อย่างไรว่าติดตั้งรุ่นใดโดยไม่ต้องติดตั้ง Studio จัดการ? ฉันมีเซิร์ฟเวอร์ที่ทำหน้าที่เป็นผู้จัดการใบอนุญาตสำหรับซอฟต์แวร์อื่น เมื่อตรวจสอบการแจ้งเตือนการใช้ RAM สูงฉันพบว่ากระบวนการsqlservr.exeใช้เวลา RAM เกือบ 2 GB

ฉันดูในเมนูโปรแกรมและพบว่าตัวจัดการการกำหนดค่าได้รับการติดตั้งมิฉะนั้นมันเป็นกระดูกที่เปลือยเปล่า ฉันคลิกที่คุณสมบัติของไฟล์ EXE และพบ 10.50.1600.1 แต่ไม่มีที่ไหนที่ฉันพบว่าระบุว่าเป็น Express, Dev, STN, ENT ฯลฯ

ถ้าฉันต้องเดานี่เป็นฉบับด่วน แต่ฉันอยากรู้ว่ามีสัญลักษณ์บอกเรื่องชัดเจนหรือไม่

อัปเดต: @Bob - ไฟล์บอกฉันว่าฉันรู้ไม่ใช่ฉบับ

@valo - ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันเรียกใช้คำสั่งนั้นและฉันได้ตรวจสอบว่ามีการเปิดใช้งานชื่อ pipes:

HResult 0x35, ระดับ 16, สถานะ 1 ผู้ให้บริการไปป์ที่มีชื่อ: ไม่สามารถเปิดการเชื่อมต่อกับ SQL Server [53] Sqlcmd: ข้อผิดพลาด: Microsoft SQL Server Native Client 10.0: มีข้อผิดพลาดเกี่ยวกับเครือข่ายหรืออินสแตนซ์> เกิดขึ้นขณะทำการเชื่อมต่อกับ SQL Server ไม่พบเซิร์ฟเวอร์> หรือไม่สามารถเข้าถึงได้ ตรวจสอบว่าชื่ออินสแตนซ์ถูกต้องหรือไม่และกำหนดค่า SQL Server ไว้หรือไม่> เพื่ออนุญาตการเชื่อมต่อระยะไกล สำหรับข้อมูลเพิ่มเติมดู SQL Server Books Online Sqlcmd: ข้อผิดพลาด: Microsoft SQL Server Native Client 10.0: หมดเวลาการเข้าสู่ระบบหมดอายุ

@ โทมัส - ฉันสังเกตเห็นชื่อหน่วยการเก็บรักษาสต็อกก่อนที่ฉันจะถามคำถาม แต่ดูเหมือนง่ายเกินไปฉันเดาว่าความสงสัยเริ่มแรกของฉันนั้นถูกต้อง

คำตอบ:


18

ซึ่งสามารถทำได้ผ่าน WMI (เข้าถึงผ่าน PowerShell ในตัวอย่างด้านล่างของฉัน) สิ่งที่ฉันทำคือดูที่คุณสมบัติ ("SKUNAME") ของบริการ SQL Server ผ่านSqlServiceAdvancedPropertyคลาส หมายเหตุมีตัวแปรเฉพาะสภาพแวดล้อมบางอย่างที่จะต้องตั้งค่าไว้ที่ด้านบนของรหัส

$ComputerName = "YourComputerName"
$ServiceName = 'YourEngineServiceName'
$PropertyName = "SKUNAME"

# retrieve the most current version of the ComputerManagement namespace
#
$ComputerManagementNamespace =
    (Get-WmiObject -ComputerName $ComputerName -Namespace "root\microsoft\sqlserver" -Class "__NAMESPACE" |
        Where-Object {$_.Name -like "ComputerManagement*"} |
        Select-Object Name |
        Sort-Object Name -Descending |
        Select-Object -First 1).Name
 
if ($ComputerManagementNamespace -eq $null) {
    Write-Error "ComputerManagement namespace not found"
}
else {
    $ComputerManagementNamespace = "root\microsoft\sqlserver\" + $ComputerManagementNamespace
} 

# get the property and its value
#
Get-WmiObject -ComputerName $ComputerName -Namespace $ComputerManagementNamespace -Class "SqlServiceAdvancedProperty" |
    Where-Object {
        $_.ServiceName -eq $ServiceName -and
        $_.PropertyName -eq $PropertyName
    } |
    Select-Object @{Name = "ComputerName"; Expression = { $ComputerName }},
        ServiceName,
        @{Name = "PropertyValue"; Expression = {
            if ($_.PropertyValueType -eq 0) {
                $_.PropertyStrValue
            }
            else {
                $_.PropertyNumValue
            }
        }}

เช่นเดียวกันข้อมูลเดียวกันนี้สามารถพบได้โดยตรงในเครื่องมือตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL เมื่อคุณเปิดมันขึ้นคลิกขวาบนบริการ SQL Server ของคุณและไปเป็นคุณสมบัติ จากนั้นคลิกที่ขั้นสูงแท็บและดูที่การเก็บรักษาการแจ้งหน่วยชื่อคีย์ คุณจะพบสิ่งที่รุ่นที่คุณใช้



18

ถ้าบริการ SQL Server กำลังทำงาน (ซึ่งขึ้นอยู่กับคำอธิบายของคุณเป็น) ให้ตรวจสอบบันทึกข้อผิดพลาดของ SQL Server คุณไม่จำเป็นต้องติดตั้ง SSMS เพื่อทำสิ่งนี้เนื่องจากเป็นเพียงไฟล์ข้อความ สถานที่ตั้งของไฟล์อาจแตกต่างกันไปขึ้นอยู่กับวิธีการที่จะได้รับการติดตั้ง แต่หนังสือออนไลน์แสดงตำแหน่งเริ่มต้นที่นี่

รายการแรกในบันทึกควรมีข้อมูลเกี่ยวกับรุ่น / รุ่น

แก้ไข:แม้จะมีความคิดเห็นในคำถามข้างต้นนี้แน่นอนที่สุดจะบอกคุณฉบับ:

2014-06-08 00:05:00.050 spid158      Microsoft SQL Server 2012 (SP1) - 11.0.3381.0 (X64) 

Aug 23 2013 20:08:13 

Copyright (c) Microsoft Corporation

Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

12

คำตอบที่รวดเร็ว

เพียงแค่เรียกใช้สิ่งต่อไปนี้:

{InstanceHome}\MSSQL\Binn\sqlservr.exe -v [-s InstanceName]

NOTE ABOUT SQL Server Express LocalDB: LocalDB can only be determined by the
existence of the following folder:

C:\Program Files\Microsoft SQL Server\{SQL Server Version: 110, 120, etc}\LocalDB\Binn

Running "sqlserver.exe -v" doesn't help as it reports as being "Developer Edition", and
searching the Registry it reports as being "Express Edition".

วิธีนี้ใช้งานได้ไม่เหมือนโซลูชันอื่น ๆ ซึ่งจะไม่ทำงานเมื่อ:

  • คุณไม่ต้องการเขียนโปรแกรม (เช่น PowerShell)?
  • ไม่ได้ติดตั้งเครื่องมือลูกค้า (จำเป็นต้องใช้ SQLCMD.EXE)
  • ไม่มีไฟล์บันทึกของ SQL Server หรือไม่มีไฟล์บันทึกที่มีเหตุการณ์เริ่ม / รีสตาร์ทใด ๆ
  • SQL Server ไม่ทำงาน (ดังนั้นจึงSELECT @@VERSION;ไม่ใช่ตัวเลือก)

ตัวอย่างที่ 1
หากคุณมีอินสแตนซ์เดียวที่ติดตั้งไว้คุณไม่จำเป็นต้องใช้-sสวิตช์:

C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn>sqlservr.exe -v

ผลตอบแทน:

2015-08-01 11:40:11.63 Server      Logging to event log is disabled. Startup option '-v' is supplied, either from the registry or the command prompt.
2015-08-01 11:40:11.63 Server      Microsoft SQL Server 2012 - 11.0.5343.0 (X64)
        May  4 2015 19:11:32
        Copyright (c) Microsoft Corporation
        Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

2015-08-01 11:40:11.63 Server      (c) Microsoft Corporation.
2015-08-01 11:40:11.63 Server      All rights reserved.
2015-08-01 11:40:11.63 Server      Server process ID is 3824.
2015-08-01 11:40:11.63 Server      System Manufacturer: '{CompanyName}', System Model: '{ModelNumber}'.
2015-08-01 11:40:11.63 Server      Authentication mode is MIXED.
2015-08-01 11:40:11.63 Server      The service account is '{AccountName}'. This is an informational message; no user action is required.
2015-08-01 11:40:11.63 Server      SQL Server shutdown has been initiated

ตัวอย่างที่ 2
หากคุณมีอินสแตนซ์หลายตัวที่ติดตั้งบนเครื่องคุณต้องใช้-sสวิตช์เพื่อระบุอินสแตนซ์ที่คุณสนใจ

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\Binn>sqlservr.exe -v
       -s SQLEXPRESS2014

ผลตอบแทน:

2015-08-01 12:01:13.13 Server      Logging to event log is disabled. Startup option '-v' is supplied, either from the registry or the command prompt.
2015-08-01 12:01:13.13 Server      Microsoft SQL Server 2014 - 12.0.4213.0 (X64)
        Jun  9 2015 12:06:16
        Copyright (c) Microsoft Corporation
        Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

2015-08-01 12:01:13.13 Server      UTC adjustment: -4:00
2015-08-01 12:01:13.13 Server      (c) Microsoft Corporation.
2015-08-01 12:01:13.13 Server      All rights reserved.
2015-08-01 12:01:13.13 Server      Server process ID is 1712.
2015-08-01 12:01:13.13 Server      System Manufacturer: '{CompanyName}', System Model: '{ModelNumber}'.
2015-08-01 12:01:13.13 Server      Authentication mode is WINDOWS-ONLY.
2015-08-01 12:01:13.13 Server      The service account is '{AccountName}'. This is an informational message; no user action is required.
2015-08-01 12:01:13.13 Server      SQL Server shutdown has been initiated

ข้อมูลเพิ่มเติม

วิธีที่เร็วที่สุดง่ายที่สุดและเชื่อถือได้มากที่สุดในการตรวจสอบข้อมูลรุ่นของโปรแกรมนั้นคือการขอข้อมูลจากโปรแกรมนั้น โปรแกรมส่วนใหญ่ ( * .COMและ* .EXE ) มีสวิตช์บรรทัดคำสั่ง / ตั้งค่าสถานะ / พารามิเตอร์ / ตัวเลือก / dealy-ma-bob ที่จะแสดงความช่วยเหลือและ / หรือข้อมูลรุ่น

สวิตช์บรรทัดคำสั่งจะขึ้นต้นด้วยตัวเลือกใดตัวเลือกหนึ่งดังต่อไปนี้ทั้งนี้ขึ้นอยู่กับโปรแกรม

  • [ไม่มีอะไร / นาดา]
  • -
  • -
  • /

และอีกครั้งขึ้นอยู่กับโปรแกรมสวิตช์บรรทัดคำสั่งจะเป็นอย่างใดอย่างหนึ่งต่อไปนี้:

  • ที่พบมากที่สุด:
    • โวลต์
    • รุ่น
  • บางครั้งรวมอยู่ในข้อมูลความช่วยเหลือทั่วไป:
    • ?
    • ชั่วโมง
    • ช่วยด้วย

{ตัวอย่าง SQL Server ที่แสดงด้านบน}

ยูทิลิตีบรรทัดคำสั่ง SQLCMD.EXE นั้นใช้-vสวิตช์เพื่อส่งค่าตัวแปรไปยังสคริปต์ SQL ดังนั้นจะแสดงเฉพาะข้อมูลรุ่นในการแสดงข้อมูลทั่วไปเท่านั้น:

C:\>sqlcmd /?
Microsoft (R) SQL Server Command Line Tool
Version 11.0.2100.60 NT x64
Copyright (c) 2012 Microsoft. All rights reserved.

usage: Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  ...
  [-v var = "value"...]  ...
  ...
  [-? show syntax summary]

อย่างไรก็ตาม NotePad มีชุดสวิตช์บรรทัดคำสั่งที่จำกัด อย่างมากเท่านั้นและไม่มีการแสดงข้อมูลรุ่นใด ๆ


ทางเลือกวิธีการไม่ยุ่งยาก:

  • ตรวจสอบรีจิสทรี:

    รหัส: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {VersionNumber} \ Tools \ Setup
    ชื่อ: รุ่น

    • หากคุณทราบหมายเลขรุ่น (เช่น SQL Server 2012 = 110, SQL Server 2014 = 120 เป็นต้น) คุณสามารถกำหนดรุ่นให้เป็นพิเศษได้โดยการเรียกใช้สิ่งต่อไปนี้ที่พร้อมท์คำสั่ง:

      REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\{VersionNumber}\Tools\Setup" /v /e /f Edition

      ส่งคืนหนึ่งรายการที่คล้ายกับที่แสดงดังต่อไปนี้:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • หากคุณต้องการเห็นสิ่งที่จะเกิดขึ้นกับการติดตั้งให้เรียกใช้สิ่งต่อไปนี้ที่พร้อมท์คำสั่ง:

      REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server" /s /v /e /f Edition

      ส่งคืนหนึ่งรายการขึ้นไปที่คล้ายกับรายการที่แสดงด้านบนและรายการต่อไปนี้:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • ตรวจสอบบันทึกการติดตั้ง:

    C: \ Program Server \ {SQL Server \ {SQL Server เวอร์ชัน: 110, 120, etc} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    สำหรับสตริง "IsExpressSku":

    (03) 2014-09-05 16:53:44 SQLEngine: - ประสิทธิผลคุณสมบัติ: IsExpressSku = จริง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.