DataBase/MSSQL

[MSSQL] SQL Server에서 sa 계정을 잃어버렸을 때 복구 방법

범데이 2024. 7. 20. 01:07
728x90

관리하고 있는 SQL Server DB의 sysadmin권한을 가진 계정이 없고, 심지어 sa계정이 비활성화 상태이다..

(비유하자면 전에 금고를 관리하던분이 관리하던 키와 함께 어디론가 사라진 그런 상황이다)

 

이런 답이 없는 상황을 어떻게 풀어나갈 수 있을까?

 

 

sa계정을 Enabled로 바꾸려고 해도 권한이 없어서 무용지물이다..

 

 

오늘은 SQL Server의 sa 계정이 비활성화된 경우, 권한을 복구하기 위한 절차를 설명한다.

 

이 포스팅에서는 SQL Server를 단일 사용자 모드로 설정하여 sa계정을 활성화하고 비밀번호를 변경하는 방법을 중점적으로 설명하고자 한다.

 

*시스템 환경

Database: SQL Server (v15.0.2000)
운영체제: Window Server 2019

 

 


 

 

1. SQL Server 단일 사용자 모드에서 권한 복구

단일 사용자 모드를 사용하여 SQL Server에 접근하고 sa 계정을 복구하는 방법은 다음과 같다.

(단일 사용자 모드에 대해서는 아래에서 따로 설명한다.)

 

 

1.1. SQL Server Configuration Manager에서 단일 사용자 모드 설정

  1. SQL Server Configuration Manager 열기:
    • 시작 메뉴에서 SQL Server Configuration Manager를 검색하여 연다.
  2. SQL Server 인스턴스 선택:
    • 왼쪽 패널에서 SQL Server Services를 클릭한다.
    • 중앙 패널에서 설정할 SQL Server 인스턴스를 선택한다. (예: SQL Server (SQLEXPRESS))
  3. 속성 열기:
    • 선택한 인스턴스에서 오른쪽 클릭하고 속성(R)을 선택한다.
  4. 시작 매개변수 설정:
    • 시작 매개 변수 탭으로 이동한다.
  5. 단일 사용자 모드 매개변수 추가:
    • 시작 매개 변수 지정 에서 -m 플래그를 추가한다.
      (이 플래그는 SQL Server를 단일 사용자 모드로 시작하도록 한다.)
    • 적용확인 을 클릭하여 변경 사항을 저장한다.

  6. SQL Server 인스턴스 재시작:
    • SQL Server Configuration Manager에서 SQL Server 인스턴스를 오른쪽 클릭하고 다시 시작(T) 을 클릭하여 인스턴스를 재시작한다. (이제 단일 사용자 모드로 시작된다.)

 

1.2. 단일 사용자 모드에서 sa 계정 복구

  1. 단일 사용자 모드에서 SQL Server에 접속:
    • PowerShell(관리자) 에서 sqlcmd명령어를 사용하여 단일 사용자 모드로 SQL Server에 접속한다
      sqlcmd -S localhost


  2. sa 계정 활성화 및 비밀번호 변경:
    • sqlcmd에서 다음 SQL 명령어를 실행하여 sa 계정을 활성화하고 비밀번호를 변경한다:
      ALTER LOGIN sa ENABLE;
      ALTER LOGIN sa WITH PASSWORD = '새로운_비밀번호';


  3. SQL Server 인스턴스 종료:
    • 작업이 완료된 후, SQL Server Configuration Manager에서 SQL Server 인스턴스를 오른쪽 클릭하고 중지(O) 를 클릭하여 인스턴스를 중지한다.
  4. 정상 모드로 전환:
    • SQL Server Configuration Manager로 돌아가 Startup Parameters에서 -m 플래그를 제거하고 인스턴스를 정상 모드로 재시작한다.
  5. 검증
    • 이제 sa계정으로 로그인해보자.

 

 

짠! 위와 같이 잘 로그인 됨을 확인할 수 있다.

(sysadmin 권한을 가진 계정이니, 볼 수 없었던 모든 DB Instance들도 보여진다.)

 

 

2. 단일 사용자 모드에 대한 설명

단일 사용자 모드는 SQL Server를 시작할 때 하나의 연결만 허용하는 특수 모드이다. 이 모드는 데이터베이스 복구, 문제 해결, 유지 관리 작업에 사용된다. (게임으로 비유하자면 "점검중" 걸어놓고 사용자 접근을 막아놓은 상태이다)

  • 용도: 데이터베이스 복구, 특정 문제 해결 등
  • 설정 방법: -m 플래그를 사용하여 SQL Server를 단일 사용자 모드로 시작한다.
  • 제한사항: 하나의 사용자만 연결할 수 있으며, 관리 작업 외에는 일반적인 사용이 제한된다.

 

3. 유의사항

1. 단일 사용자 모드의 주의사항:

  • 한 사용자만 접근 가능: 단일 사용자 모드에서는 하나의 연결만 허용되므로, 다른 사용자의 연결이 차단된다.
  • 데이터 손상 가능성: 데이터베이스 복구 작업 중 데이터 손상이 발생할 수 있으므로 신중하게 사용해야 한다.

2. 비밀번호 및 계정 관리:

  • 비밀번호 관리: sa 계정의 비밀번호는 안전하게 관리하며, 정기적으로 변경하는 것이 좋다.


3. 정상 모드로의 전환:

  • 단일 사용자 모드에서 작업이 완료된 후, SQL Server를 정상 모드로 재시작하여 일반 사용자 접근을 가능하게 해야한다.

 

4. 번외 (이슈사항)

단일 사용자 모드로 작업 후, 시작 매개 변수에서 -m 플래그를 제거한 다음 SQL Server를 재시작했는데도 정상 모드로 전환이 안되었다.

 

단일 사용자 모드로 SQL Server 인스턴스가 실행중이면 위와 같이 접근 차단이 되는데, 한참 동안을 원인 찾기에 애썼다..

 

아무리 봐도 시작 매개 변수 설정 부분에서 -m 플래그를 빼줬는데..?

 

검색해본 결과 -m 플래그가 없더라도, 다른 매개변수가 설정되어서 단일 사용자 모드를 유발할 수 있다고 한다.

그래서 시작 매개 변수를 보니 -f 플래그가 작업 전에도 들어가 있었다. 이는 강제로 SQL Server를 시작하는 플래그인데, 데이터 베이스 파일이 손상된 경우 강제로 시작하여 복구 작업을 수행할 수 있게 한다.

(누가 넣었는지 모르겠지만.. 제발 꼭 썼으면 제자리로 되돌려 놓자..)

 

다행히 해당 플래그를 빼주고 시작하니 정상 모드로 시작 되어 최종적으로 모두 해결 되었다! 👍

 


 

 

이 포스팅이 SQL Server에서 sa 계정을 복구하고 단일 사용자 모드를 이해하는 데 도움이 되길 바랍니다.

추가적인 질문이 있거나 도움이 필요하면 언제든지 댓글로 남겨주세요!

반응형