데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

클러스터된 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
» 클러스터된 SQL 서버 인스턴스에 대한 호스트 이름 확인 jevida(강성욱) 2017.01.11 1368
1989 sys.dm_tran_locks 를 이용한 잠금 정보 확인 jevida(강성욱) 2017.01.11 1527
1988 외래키 제약 조건 삭제 후 재작성 스크립트 생성하기 jevida(강성욱) 2017.01.11 1781
1987 페이지 ID로 테이블 이름 찾기 jevida(강성욱) 2017.01.11 1434
1986 DBCC CHECKPRIMARYFILE 사용법 jevida(강성욱) 2017.01.11 1328
1985 컬럼스토어 인덱스 대용량 데이터 로드 jevida(강성욱) 2017.01.11 1743
1984 컬럼스토어 인덱스 INSERT 작업과 동시성 jevida(강성욱) 2017.01.11 1491
1983 컬럼스토어 인덱스 동시성 jevida(강성욱) 2017.01.11 1781
1982 컬럼스토어 인덱스 ROW와 ROWGROUP 영향 jevida(강성욱) 2016.11.23 2943
1981 테이블 변수와 TF 2453 jevida(강성욱) 2016.11.23 3185
1980 Sp_trace_create MaxfileSize 오류 jevida(강성욱) 2016.11.23 2394
1979 RANDBETWEEN 함수 만들기 jevida(강성욱) 2016.11.23 4611
1978 Optimize for hint 쿼리 최적화 jevida(강성욱) 2016.11.23 3509
1977 TempDB 파일 사이즈 증가 시 경고 받기 jevida(강성욱) 2016.11.23 3045
1976 블록킹 세션을 찾아 우선순위 낮은 세션 종료하기 jevida(강성욱) 2016.11.23 3245
1975 다양한 포맷의 이름 파싱 하기 jevida(강성욱) 2016.11.23 2663
1974 비결정적 사용자 정의 함수 사용으로 인한 느린 쿼리 jevida(강성욱) 2016.11.23 3148
1973 스냅숏 격리 수준(SNAPSHOT ISOLATION LEVEL) jevida(강성욱) 2016.11.23 4297
1972 SQL Server 파라메터 스니핑의 다양한 접근 jevida(강성욱) 2016.11.23 3147
1971 잘못된 개체를 참조하는 SQL Server 개체 찾기 jevida(강성욱) 2016.11.23 1942





XE Login