programing

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

javamemo 2023. 4. 25. 21:47
반응형

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

T-SQL 스크립트를 사용하여 현재 연결의 SQL Server 및 인스턴스 이름을 가져오려면 어떻게 해야 합니까?

방금 SO 질문에서 답을 찾았습니다(문자 그대로, 어떤 답변도 아닌 질문 안에서).

SELECT @@servername

기본 인스턴스가 아닌 경우 servername\servername을 반환합니다.

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쿼리합니다.

인스턴스 이름만 사용할 수 있습니다.다음을 사용하여 SQL 서버 환경의 인벤토리를 구성할 수 있습니다.

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

이걸 찾았어요

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

그러면 서버에 설치된 모든 인스턴스의 목록이 나타납니다.


ServerName의 속성입니다.SERVERPROPERTY기능을 합니다.@@SERVERNAME유사한 정보를 반환합니다.ServerName속성은 함께 고유한 서버 인스턴스를 구성하는 윈도우즈 서버와 인스턴스 이름을 제공합니다. @@SERVERNAME에서는 현재 구성된 로컬 서버 이름을 제공합니다.

현재 서버에 대한 마이크로소프트의 예는 다음과 같습니다.

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

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

연결된 서버 및 인스턴스 목록을 가져오려면 다음과 같이 하십시오.

select * from Sys.Servers

연결된 서버에 있는 데이터베이스 목록을 가져오려면 다음과 같이 하십시오.

SELECT * from sys.databases;

레지스트리 쿼리에 설명을 추가하려고요현재 인스턴스에 대해 일치하는 비트 수(32 또는 64)의 인스턴스만 나열됩니다.

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

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server

64비트 인스턴스에서 이를 쿼리하여 모든 32비트 인스턴스도 가져올 수 있습니다.32비트 인스턴스는 Wow6432Node로 제한되므로 64비트 레지스트리 트리를 읽을 수 없습니다.

아래와 같이 Transact-SQL(T-SQL)을 사용하여 서버 이름, 시스템 이름 및 인스턴스 이름을 얻을 수 있습니다.

SELECT @@SERVERNAME                    -- DESKTOP-OVPADTC\SQLEXPRESS
SELECT SERVERPROPERTY ('ServerName')   -- DESKTOP-OVPADTC\SQLEXPRESS

SELECT HOST_NAME()                     -- DESKTOP-OVPADTC
SELECT SERVERPROPERTY ('MachineName')  -- DESKTOP-OVPADTC

SELECT @@SERVICENAME                   -- SQLEXPRESS
SELECT SERVERPROPERTY ('InstanceName') -- SQLEXPRESS

인스턴스 이름을 찾는 다른 방법 - 데이터베이스 이름에서 오른쪽 클릭 후 속성을 선택합니다. 이 부분에서는 왼쪽 아래 모서리에서 보기 연결 속성을 볼 수 있습니다. 이 항목을 클릭하면 인스턴스 이름이 표시됩니다.

언급URL : https://stackoverflow.com/questions/18070177/how-to-get-current-instance-name-from-t-sql 입니다.

반응형