programing

T-SQL에서 현재 인스턴스 이름을 가져 오는 방법

nasanasas 2020. 10. 18. 18:19
반응형

T-SQL에서 현재 인스턴스 이름을 가져 오는 방법


T-SQL 스크립트를 사용하여 현재 연결의 SQL Server 서버 및 인스턴스 이름을 어떻게 얻을 수 있습니까?


이 SO 질문 에서 답을 찾았습니다 (문자 그대로, 어떤 대답이 아니라 질문 안에 있음).

SELECT @@servername

기본 인스턴스가 아닌 한 servername \ instance를 반환합니다.

SELECT @@servicename

기본값 (MSSQLSERVER) 인 경우에도 인스턴스 이름을 반환합니다.


이것은 어떤가요:

EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE',
                   @key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl',
                   @value_name='MSSQLSERVER'

인스턴스 이름도 가져옵니다. null기본 인스턴스를 의미합니다.

SELECT SERVERPROPERTY ('InstanceName')

http://technet.microsoft.com/en-us/library/ms174396.aspx


SELECT @@servername 데이터를 다음과 같이 제공합니다. server/instanceName

만 가져 오려면 쿼리 instanceName를 실행해야합니다 select @@ServiceName.


나는 이것을 찾았다:

EXECUTE xp_regread
        @rootkey = 'HKEY_LOCAL_MACHINE',
        @key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
        @value_name = 'InstalledInstances'

그러면 서버에 설치된 모든 인스턴스 목록이 제공됩니다.


함수 ServerName속성 SERVERPROPERTY@@SERVERNAME유사한 정보를 반환합니다. ServerName속성은 함께 고유 한 서버 인스턴스를 구성하는 Windows 서버 및 인스턴스 이름을 제공합니다. @@SERVERNAME현재 구성된 로컬 서버 이름을 제공합니다.

현재 서버의 Microsoft 예는 다음과 같습니다.

SELECT CONVERT(sysname, SERVERPROPERTY('servername'));

이 시나리오는 Windows 서버에 SQL Server의 여러 인스턴스가 설치되어 있고 클라이언트가 현재 연결에서 사용하는 동일한 인스턴스에 대한 다른 연결을 열어야 할 때 유용합니다.


인스턴스 이름에서 멈추는 이유는 무엇입니까? 다음을 사용하여 SQL Server 환경을 인벤토리 할 수 ​​있습니다.

SELECT  
    SERVERPROPERTY('ServerName') AS ServerName,  
    SERVERPROPERTY('MachineName') AS MachineName,
    CASE 
        WHEN  SERVERPROPERTY('InstanceName') IS NULL THEN ''
        ELSE SERVERPROPERTY('InstanceName')
    END AS InstanceName,
    '' as Port, --need to update to strip from Servername. Note: Assumes Registered Server is named with Port
    SUBSTRING ( (SELECT @@VERSION),1, CHARINDEX('-',(SELECT @@VERSION))-1 ) as ProductName,
    SERVERPROPERTY('ProductVersion') AS ProductVersion,  
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion,
    SERVERPROPERTY('ProductMinorVersion') AS ProductMinorVersion,
    SERVERPROPERTY('ProductBuild') AS ProductBuild,
    SERVERPROPERTY('Edition') AS Edition,
    CASE SERVERPROPERTY('EngineEdition')
        WHEN 1 THEN 'PERSONAL'
        WHEN 2 THEN 'STANDARD'
        WHEN 3 THEN 'ENTERPRISE'
        WHEN 4 THEN 'EXPRESS'
        WHEN 5 THEN 'SQL DATABASE'
        WHEN 6 THEN 'SQL DATAWAREHOUSE'
    END AS EngineEdition,  
    CASE SERVERPROPERTY('IsHadrEnabled')
        WHEN 0 THEN 'The Always On Availability Groups feature is disabled'
        WHEN 1 THEN 'The Always On Availability Groups feature is enabled'
        ELSE 'Not applicable'
    END AS HadrEnabled,
    CASE SERVERPROPERTY('HadrManagerStatus')
        WHEN 0 THEN 'Not started, pending communication'
        WHEN 1 THEN 'Started and running'
        WHEN 2 THEN 'Not started and failed'
        ELSE 'Not applicable'
    END AS HadrManagerStatus,
    CASE SERVERPROPERTY('IsSingleUser') WHEN 0 THEN 'No' ELSE 'Yes' END AS InSingleUserMode,
    CASE SERVERPROPERTY('IsClustered')
        WHEN 1 THEN 'Clustered'
        WHEN 0 THEN 'Not Clustered'
        ELSE 'Not applicable'
    END AS IsClustered,
    '' as ServerEnvironment,
    '' as ServerStatus,
    '' as Comments

레지스트리 쿼리에 대한 설명을 추가하기 위해. 현재 인스턴스에 대해 일치하는 비트 (32 또는 64)의 인스턴스 만 나열합니다.

64 비트 OS에서 32 비트 SQL 인스턴스의 실제 레지스트리 키는 다음과 같습니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server

You can query this on a 64-bit instance to get all 32-bit instances as well. The 32-bit instance seems restricted to the Wow6432Node so cannot read the 64-bit registry tree.


another method to find Instance name- Right clck on Database name and select Properties, in this part you can see view connection properties in left down corner, click that then you can see the Instance name.

참고URL : https://stackoverflow.com/questions/18070177/how-to-get-current-instance-name-from-t-sql

반응형