SQL Server/SQL Server Tip

클러스터된 SQL 서버 인스턴스에 대한 호스트 이름 확인

SungWookKang 2015. 7. 23. 10:25
반응형

클러스터된 SQL 서버 인스턴스에 대한 호스트 이름 확인

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014

 

SQL Server 클러스터 페일오버를 트러블슈팅할때 페일오버된 시간과 페일오버 이전 호스트의 이름을 확인하는 것은 필수 사항이다. 이번 시간에 장애조치가 발생한 시간과 이전에 실행된 SQL Server 이름을 확인하는 방법에 대해서 알아본다.

 

SQL Server 클러스터링 환경에서 페일오버 이후에는 이전의 SQL Server 노드를 식별하는 것이 곤란하다. 로깅의 대부분이 네트워크 또는 가상 서버의 인스턴스명을 사용하기 때문이다. 이때 SQL Server 에러로그와 이벤트 뷰어 로그를 사용하여 확인 할 수 있다.

 

SQL Server가 현재 실행중인 노드/호스트 이름을 확인하는 것은 매우 간단하다. 다음 스크립트를 실행하면 확인 할 수 있다.

select serverproperty('ComputerNamePhysicalNetBIOS')

 

 

 

SQL Serer가 다시 시작되었을 때 장애 시점은 에러로그를 통해서 확인 할 수 있다. SSMS에서 로그파일 뷰어를 사용하거나 xp_readerrorlog 확장 저장 프로시저를 사용할 수 있다.

 

아래 그림은 SSMS의 화면이다. 첫 번째 메시지는 현재 호스트의 로그가 기록되어 있기 때문에 이전의 기록인 2 번째 로그를 확인 한다.

 

예를 들어 아래 그림을 보면 동일한 호스트 / 노드(DBP2)에서 다시 시작되었음을 나타낸다. 마지막 메시지는 SQL Server가 장애조치 이전의 호스트 DBP1에서 실행되었음을 나타낸다.

 

 

확장 프로시저를 이용할 때에는 NETBIOS라는 구문이 포함된 문장을 확인해야 한다. 다음 스크립트를 실행하면 NETBIOS를 포함한 오류로그를 확인할 수 있다.

SET NOCOUNT ON

-- 1 - Declare variables

DECLARE @numerrorlogfile int

-- 2 - Create temporary table

CREATE TABLE #errorLog

([LogDate] datetime,

[ProcessInfo] nvarchar(20),

[Text] nvarchar(max)

)

-- 3 - Initialize parameters

SET @numerrorlogfile = 0

-- 4 - WHILE loop to process error logs

WHILE @numerrorlogfile < 5

BEGIN TRY

INSERT #errorLog ([LogDate], [ProcessInfo], [Text])

EXEC master.dbo.xp_readerrorlog @numerrorlogfile, 1, N'NETBIOS', NULL, NULL, NULL, N'desc'

 

SET @numerrorlogfile = @numerrorlogfile + 1;

END TRY

BEGIN CATCH

SET @numerrorlogfile = @numerrorlogfile + 1;

END CATCH

-- 5 - Final result set

SELECT LogDate,[Text] FROM #errorLog

-- 6 - Clean-up temp table

DROP TABLE #errorlog

GO

 

 

 

Windows Event 뷰어에서도 호스트의 이름을 확인 할 수 있다. 이벤트ID 17664 로그에서 Node/Host를 확인 할 수 있다.

 

 

[참고자료]

http://www.mssqltips.com/sqlservertip/2744/steps-to-check-the-host-name-for-a-clustered-sql-server-instance

 

2014-10-28 / 강성욱 / http://sqlmvp.kr

 

 

SQL Server, mssql, sql cluster, 클러스터링, 데이터베이스, SQL Failover, SQL 클러스터, DB 클러스터, High Available, 고가용성, SQL 2012, DBA

반응형