본문 바로가기

프로그래밍/MSSQL

MSSQL Server/Agent실행 계정 변경

MSSQL Server 및 Agent 서비스를 실행하는 계정 변경시


  MSSQL서버에서 백업 및 복제(게시) 서비스 이용시 URN방식을 이용할 경우가 있는데 이경우 원격 서버의 공유디렉토리 (UNC )에 대한 접근 권한이 문제가 될 경우가 있다. urn 경로에 접속할 경우에 MSSQL을 실행하고 있는 로컬 계정이 원격 컴퓨터의 계정과 일치 해야하는데(아이디/비번) 이때 MSSQL실행 계정이 로컬시스템으로 되어 있다면 UNC방식은 이용하지 못하게 된다. 따라서 MSSQL서버의 실행 계정을 administrator 계정으로 변경할시에 MSSQL서버는 실행이 되지만 SQLAgent서비스는 실행계정이 로컬시스템 또는 administrator 계정이든 실행되지 않는다(이유는 아마도 MSSQL Server실행 계정과의 문제일 것 같음)


UNC 예) \\REMOTESVR\ShareDoc


해결책 

  이때 로컬시스템의 이벤트를 확인해 보면 다음과 같은 오류 메시지가 보이는데 이 문제는 AWE 메모리 옵션 설정 때문으로 생각된다.

SQLServerAgent could not be started (reason: SQLServerAgent은(는) SQLServer에 SysAdmin으로 연결할 수 있어야 하는데 '(알 수 없음)'이(가) SysAdmin 역할의 멤버가 아닙니다.).

  AWE 옵션은 실제 win32 계열에서 사용할 수 있는 메모리 보다 더 많은 메모리를 확보하기 위하여 MSSQL서버 시작 옵션으로 지정 하는데 이때 로컬 보안 정책을 변경하여 SQLServr.exe를 실행할 수 있는 계정정보를 추가해 줌으로써 해결할 수 있다.


이 문제는 "AWE 구성시 Lock Pages in Memory 옵션 설정"이라는 키워드로 공유되며

다음과 같이 처리 한다.


  1. 시작메뉴에서 실행을 클릭
  2. 열기상자에 "gpedit.msc" 입력후 실행하여 그룹정책 대화 상자를 연다.
  3. "로컬컴퓨터정책 > 컴퓨터 구성> 보안 설정 > 로컬 정책 > 사용자 권한 할당"을 선택한다.
  4. 상세 정책목록에서 "메모리 페이지 잠그기"를 더블클릭
  5. "메모리의 페이지 잠그기 등록정보" 창에서 로컬 보안 설정 탭에 메모리의 페이지 잠그기 권한을 줄 사용자 또는 그룹을 추가한다. 위에서 MSSQL서버의 실행 계정을 administrator로 변경할 예정이므로 administrator 계정을 추가하고 확인 버튼을  클릭한다.

상기 작업을 마무리하고 SQL서비스 및 SQLAgent 서비스의 시작 계정을 administrator로 변경 후 재시작 한다.

이렇게 설정함으로써 기존 SQL서비스 및 에이전트 서비스를 정상으로 실행시키면서 UNC방식을 이용한 원격 서버의 공유 디렉토리를 이용한 백업 및 복제(게시)가 가능해 진다