본 게시물은 개인적인 의견으로 작성되었으니 절대적인 정보가 아닐 수 있습니다. 참고만 하시고 궁금한 사항이 있으시면 연락주세요.

티스토리 뷰

SQL Cluster 환경일 경우에 단일모드를 하는 방법에 있어서 재미난 사실을 알았다.
그 동안 경험이 없는 터라 몰랐던 사실일뿐이다.

일반적은 StandAlone SQL Server 환경일 경우에는 단일모드 시작 후 SSMS 로 접근이 가능하다. 그러나 클러스터 환경일 경우에는 조금 차이가 있다.

우선, 단일모드란?
사용자 한명만 서버에 연결하는 모드이며, 서버 구성 옵션을 변경하거나 손상된 master 데이터베이스 또는 다른 시스템 데이터베이스를 복구할때 시작하는 모드이다.

단일모드 시작 시 주의사항
Stop the SQL Server Agent service before connecting to an instance of SQL Server in single-user mode; otherwise, the SQL Server Agent service uses the connection, thereby blocking it.

단일모드 시작 후 접속방법
1. SSMS 쿼리 편집기
2. SQLCMD 유틸리티 통한 명령프롬프트 사용

클러스터 환경에서 SQL Server 단일모드 시작하기
클러스터 환경에서는 SQL Server 구성관리자에서 시작 매개변수 -m 으로 변경 후 SQL Sever 리소스를 재시작(오프라인->온라인)시 쿼리세션을 접근할 방법이 없다.
왜냐하면, 클러스터 리소스 dll들이 사용 가능한 모든 연결을 리소스 온라인과 동시에 점유하게 된다. 그래서 SSMS 나 SQLCMD로 접근이 불가능하다.

그래서 아래와 같은 방법으로 접근을 해야 된다.
단, 주의사항은 net start mssqlserver 를 수행하는 서버는 SQL 리소스그룹을 소유한 노드서버에서만 명령어를 수행해야 된다. 반대편노드에서 수행하면 아래 이미지 첫번째 오류를 만날수 있다.

방법.
1. SQL Server 고급 속성에서 –m 시작 매개 변수를 제거합니다.  (존재할 경우에만 수행)
2. SQL Server 리소스를 오프라인 상태로 만듭니다.  (SQL Server Agent도 같이 오프라인 된다.)
3. 이 그룹의 현재 소유자 노드에서 명령 프롬프트를 열고 net start MSSQLSERVER /m 명령을 실행합니다. 
4. 클러스터 관리자 또는 장애 조치(failover) 클러스터 관리 콘솔에서 SQL Server 리소스가 여전히 오프라인 상태인지 확인합니다.  오프라인 상태가 정상이다. (재미난 사실임.)
이 상태에서 SQL Server 에이전트 리소스를 온라인 시키면 대형사고를 경험할 수 있다.
5. 이제 SQL Server에 연결합니다. SQLCMD -E -S<servername> 명령을 사용하고 필수 작업을 수행합니다. 
6. 작업이 완료되면 명령 프롬프트에서 net stop mssqlserver 로 SQL을 중지하고, 클러스터 관리자를 통해 SQL 및 기타 리소스를 다시 온라인 상태로 만듭니다.
7. 정상적으로 접속 가능하다.

 아래 이미지를 보면 상태를 확인 할 수 있다.

 

여기서 재미난 사실은 net start mssqlserver 로 시작했을 경우에는 SQL Server 구성관리자에서 SQL Server 서비스를 중지를 하면 동작하지 않는다.
net start 상태에서는 클러스터 관리자에서 SQL 리소스가 오프라인 상태이므로 중지할 수 도 없다. 그래서 net stop 명령어로만 중지가 가능한것 같다. (SQL Server 2012에서만 테스트함.)

결론적으로 "클러스터 환경에서 SQL Server 단일모드 시작하기"는 net start mssqlserver 명령어로 SQL을 시작해야 단일모드 상태를 만들 수 있으며, 한 명의 사용자가 접근이 가능하다.

[기술문서]
단일 사용자 모드로 SQL Server 시작
https://msdn.microsoft.com/ko-kr/library/ms188236(v=sql.110).aspx

 

본 게시물은 개인적인 의견으로 작성되었으니 절대적인 정보가 아님을 알려드립니다.
참고만 하시고 궁금한 사항이 있으시면 연락주시기 바랍니다.

 

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday