클러스터된 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

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1250
2006 인덱스 유지관리 작업과 SQL Server 쿼리 성능 jevida(강성욱) 2017.01.11 3399
2005 네트워크 드라이브에 데이터베이스 복원하기 jevida(강성욱) 2017.01.11 4231
2004 확장 저장 프로시저를 활용한 논리디스크 용량 확인 jevida(강성욱) 2017.01.11 2508
2003 날짜 참조 테이블 만들기 jevida(강성욱) 2017.01.11 3166
2002 인덱스 상세 정보 확인 jevida(강성욱) 2017.01.11 3820
2001 DTC Transacntion 오버헤드 jevida(강성욱) 2017.01.11 1319
2000 대용량 로드를 위한 BULK INSERT 옵션 jevida(강성욱) 2017.01.11 5492
1999 SQL Server 2014 Diagnostic Information Queries jevida(강성욱) 2017.01.11 1644
1998 SQL Server 2012 Contained Database jevida(강성욱) 2017.01.11 1047
1997 SQL Server 2008R2 Diagnostic Information Queries jevida(강성욱) 2017.01.11 1447
1996 SQL Server 2005 Diagnostic Information Queries jevida(강성욱) 2017.01.11 1387
1995 601 Error, Could not continue scan with NOLOCK due to SQL Server data Movement jevida(강성욱) 2017.01.11 3959
1994 데이터베이스의 모든 인덱스 생성 삭제 스크립트 만들기 jevida(강성욱) 2017.01.11 1702
1993 SQL Server Spinlock 소개 jevida(강성욱) 2017.01.11 1620
1992 Ad-hoc 쿼리와 실행계획 jevida(강성욱) 2017.01.11 2613
1991 로그인 계정이 접근할 수 있는 데이터베이스 확인 jevida(강성욱) 2017.01.11 3080
» 클러스터된 SQL 서버 인스턴스에 대한 호스트 이름 확인 jevida(강성욱) 2017.01.11 1396
1989 sys.dm_tran_locks 를 이용한 잠금 정보 확인 jevida(강성욱) 2017.01.11 1612
1988 외래키 제약 조건 삭제 후 재작성 스크립트 생성하기 jevida(강성욱) 2017.01.11 1859
1987 페이지 ID로 테이블 이름 찾기 jevida(강성욱) 2017.01.11 1462





XE Login