SSMS가 설치되지 않은 SQL Server 버전 / 버전은 어떻게 찾습니까?


20

Management Studio를 설치하지 않고 설치된 에디션을 어떻게 알 수 있습니까? 다른 소프트웨어의 라이센스 관리자 역할을하는 서버가 있습니다. 높은 RAM 사용량 경고를 조사한 결과 sqlservr.exe 프로세스가 거의 2GB의 RAM을 차지하고 있음을 발견했습니다 .

프로그램 메뉴를 살펴보고 구성 관리자가 설치되어 있음을 알았습니다. 그렇지 않으면 꽤 뼈대입니다. EXE 파일의 속성을 클릭하고 10.50.1600.1을 찾았지만 Express, Dev, STN, ENT 등을 나타내는 위치는 없습니다.

내가 짐작해야한다면, 이것은 표현 판이지만, 분명한 이야기가 있는지 알고 싶었다.

업데이트 : @ Bob-파일은 에디션이 아니라 내가 아는 것을 알려줍니다.

@valo-해당 명령을 실행할 때 다음 오류가 발생하고 명명 된 파이프가 활성화되어 있는지 확인했습니다.

결과 0x35, 레벨 16, 상태 1 명명 된 파이프 공급자 : SQL Server에 대한 연결을 열 수 없습니다 [53]. Sqlcmd : 오류 : Microsoft SQL Server Native Client 10.0 : SQL Server에 연결하는 동안 네트워크 관련 또는 인스턴스 별 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스 할 수 없습니다. 인스턴스 이름이 올바른지 확인하고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인하십시오. 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오. Sqlcmd : 오류 : Microsoft SQL Server Native Client 10.0 : 로그인 시간이 만료되었습니다.

@thomas- 질문하기 전에 주식 보관 단위 이름을 발견 했지만 너무 쉬운 것 같습니다. 초기 의심이 맞았습니다.

답변:


18

이것은 WMI (아래 예제에서 PowerShell을 통해 액세스)를 통해 수행 할 수 있습니다. 내가하고있는 일은 SqlServiceAdvancedProperty클래스 를 통해 SQL Server 서비스의 속성 ( "SKUNAME")을 보는 것 입니다. 코드 상단에 따라 설정해야하는 환경 별 변수가 몇 가지 있습니다.

$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 Server 구성 관리자 도구에서 직접 찾을 수 있습니다. 일단 열면 SQL Server 서비스를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하십시오 . 그런 다음 고급 탭을 클릭 하고 재고 유지 단위 이름 키를보십시오. 사용중인 에디션을 찾을 수 있습니다.


23

명령 행 도구를 사용해 볼 수 있습니다.

C:\>sqlcmd -S [SERVER] -d [DB_NAME] -E -Q "SELECT @@VERSION"

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이 있으며 도움말 및 / 또는 버전 정보를 표시합니다.

프로그램 자체에 따라 명령 줄 스위치 앞에 다음 중 하나가 붙습니다.

  • [아무것도 / 나다]
  • -
  • -
  • /

또한 프로그램 자체에 따라 명령 줄 스위치는 다음 중 하나가됩니다.

  • 가장 흔한:
    • V
    • 번역
  • 때때로 일반 도움말 정보에 포함됩니다 :
    • ?
    • h
    • 도움

{위에 표시된 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]

그러나 메모장에는 매우 제한된 명령 줄 스위치 세트 만 있으며 버전 정보를 표시하는 스위치 는 없습니다.


대안, 혼란없는 방법 :

  • 레지스트리를 확인하십시오.

    키 : HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {VersionNumber} \ Tools \ 설치
    이름 : Edition

    • 버전 번호 (예 : 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 Files \ Microsoft SQL Server \ {SQL Server 버전 : 110, 120 등} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    "IsExpressSku"문자열의 경우 :

    (03) 2014-09-05 16:53:44 SQLEngine :-효과적인 속성 : IsExpressSku = True

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.