sa 비밀번호를 어떻게 재설정합니까?


22

컴퓨터에서 sa 암호를 잃어 버렸고 관리자 그룹의 계정을 사용하여 컴퓨터에 직접 로그인하면 SQL Server Management Studio에서 Windows 인증을 사용하여 로그인 할 수 없습니다.

내 계획은 단순히 서버에 로그인하고 Windows 인증을 통해 연결 한 다음 새 비밀번호를 사용하도록 sa를 재설정하는 것이 었습니다. Windows 인증을 통해 연결할 수 없으므로 작동하지 않습니다.

sa 비밀번호를 어떻게 다시 설정할 수 있습니까?


답을 찾았습니다. 도메인 관리자로 로그인 할 수 없지만 로컬 관리자를 사용하면 정상적으로 작동했습니다.
Daniel Williams

로컬 시스템 '관리자'그룹의 구성원이이를 수행 할 수 있다는 의미입니까? 후손을 위해, 당신은 어떤 정확한 조치를 취했습니까?
p.campbell

계정은 로컬 관리자 계정이었습니다. 이 계정은 내 도메인 계정과 마찬가지로 로컬 관리자 그룹의 일부입니다. 그러나 로컬 관리자 계정 만 Windows 인증을 사용하여 Sql Server에 로그인 할 수있었습니다. 도움이 되길 바랍니다.
Daniel Williams

단일 사용자 모드에서 인스턴스를 시작하면 로컬 관리자 그룹의 일부인 로컬 계정도 인스턴스에 액세스 할 수 있습니다. 편집 : @ user1419 링크가 이것을 지적합니다.
Shawn Melton

답변:


10

아래 링크에 언급 된 단계에 따라 SA 비밀번호를 재설정 할 수 있습니다.

아래에 요약 된 단계 :

  1. 시작 메뉴> 프로그램> Microsoft SQL Server 20xx> 구성 도구> 설치 한 최신 버전의 SQL Server와 관련된 SQL Server 구성 관리자를 엽니 다 (예 : 2005 및 2012가 설치된 경우 2012 버전 사용). 시작 메뉴가 없습니까? Windows 8의 시작 화면에서 표시 될 때까지 SQL Server Con ...을 입력하십시오.
  2. SQL Server 서비스에서 인스턴스를 마우스 오른쪽 단추로 클릭하고 "중지"를 선택하여 복구해야하는 SQL Server 인스턴스를 중지하십시오.
  3. 방금 중지 한 인스턴스를 마우스 오른쪽 단추로 클릭하고 속성을 클릭 한 다음 "고급"탭의 속성 텍스트 상자에서 "시작 매개 변수"옵션의 목록 끝에 "; -m"을 추가합니다 (최신 버전의 경우 "시작 매개 변수"탭으로 직접 이동하여 "-m"을 입력 한 후 구문, 세미콜론 또는 기타 사항에 대해 걱정하지 않고 추가를 클릭하십시오.
  4. “확인”버튼을 클릭하고 SQL Server 인스턴스를 다시 시작하십시오.
  5. SQL Server 인스턴스가 단일 사용자 모드에서 시작되면 Windows 관리자 계정은 Windows 인증을 사용하는 sqlcmd 유틸리티를 사용하여 SQL Server에 연결할 수 있습니다. "sp_addsrvrolemember"와 같은 Transact-SQL 명령을 사용하여 기존 로그인 (또는 새로 만든 로그인)을 sysadmin 서버 역할에 추가 할 수 있습니다.

다음 예는 "CONTOSO"도메인의 "Buck"계정을 sysadmin 역할에 추가합니다.

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

sysadmin 액세스가 복구되면 Configuration Manager를 사용하여 시작 매개 변수에서“; -m”을 제거하고 SQL Server 인스턴스를 한 번 더 다시 시작하십시오.

참고 : “;”과“-m”사이에 공백이 없는지 확인하십시오. 레지스트리 매개 변수 구문 분석기는 이러한 오타에 민감합니다. SQL Server ERRORLOG 파일에 "SQL Server가 단일 사용자 모드에서 시작되었습니다"라는 항목이 표시됩니다.


추가 자료 :

궁극적으로 항상 데이터베이스 파일을 다른 인스턴스에 복사하거나 SQL Server를 다시 설치할 수도 있습니다 (해당 프로세스 중에 로컬 계정을 sysadmin으로 추가).


9

수행 할 작업은 SQL Server 버전과 새 자격 증명을 설정하기 위해 SQL Server 서비스를 중단 할 수 있는지 여부에 따라 다릅니다. 여기서 처음 두 가지 방법은 인스턴스를 다시 시작할 필요가 없습니다.


SQL Server 2005, 2008 및 2008 R2 인스턴스의 경우

NT AUTHORITY\SYSTEM계정 (또는 다른 백도어 방법)을 사용하여 연결할 수 있습니다 . 여기에 몇 가지 답변이 있습니다.

이 문제를 해결 하는 MSSQLTips.com 에 대한 팁도 있습니다 .

기본적 으로 Microsoft에서 PSExec 을 다운로드 한 다음 설치 한 후에이를 사용하여 Management Studio를 시작합니다.

PsExec -s -i "C:\...\Ssms.exe"

이것은 다음 NT AUTHORITY\SYSTEM과 같이 객체 탐색기에서 연결 하고 수행 할 수있게합니다.

  • 인스턴스를 SQL Server 및 Windows 인증 모드로 변경 -서버 이름을 마우스 오른쪽 단추로 클릭하고 특성을 적중 한 후 라디오 단추가 현재 Windows로만 설정된 경우이를 변경하십시오.

    여기에 이미지 설명을 입력하십시오

  • sa계정 의 비밀번호를 설정하십시오 -보안, 로그인, 마우스 오른쪽 버튼을 클릭 sa하고 속성을 클릭하십시오 . 결과 대화 상자에는 두 개의 비밀번호 입력 필드가 있습니다.

    여기에 이미지 설명을 입력하십시오

  • 자신의 로그인을sysadmin 마우스 오른쪽 단추로 클릭하여 로그인, 새 로그인으로 추가하십시오. 로그인 이름 (형식 DOMAIN\username)을 입력 한 다음 서버 역할 탭으로 이동하고 sysadmin상자를 선택하고 확인을 클릭하십시오.

    여기에 이미지 설명을 입력하십시오

  • 또는 로그인이 이미 나열되어 있으면 마우스 오른쪽 단추로 속성을 클릭 sysadmin하고 서버 역할 아래에서 확인되어 있는지 확인하십시오.


SQL Server 2012 및 최신 인스턴스

SQL Server 2012부터는 NT Authority\SYSTEM기본적으로 더 이상 SQL Server에 대한 권한이 부여되지 않았습니다. Argenis Fernandez 는 이러한 최신 버전에서이를 수행하는 또 다른 방법을 자세히 설명했습니다 .

  1. SQL VSS Writer 서비스가 실행 중이면 중지하고이를 유지 관리 할 수있는 모든 유지 관리 계획 또는 타사 백업 소프트웨어를 일시 중단하십시오.
  2. 열기 regedit.exe의 값을 변경 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath하는 점에 SQLCMD.exe있는 것으로 예정된다 C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. 편집 한 후 레지스트리 값은 다음과 같이 보일 것입니다 (스크롤에 대해 죄송합니다).

    "C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
  3. SQL VSS Writer 서비스를 다시 시작해보십시오 (오류가 발생합니다).

  4. 이제를 sysadmin사용하여 연결할 수 있습니다 YourDomain\YourUserName. 따라서 SQL VSS Writer 서비스를 중지하고 레지스트리를 수정 한 후 서비스를 다시 시작하십시오 (서비스를 실행해야하거나 시작하기 전에 실행중인 경우).

나는 이것을 두 번째 팁으로 훨씬 더 자세히 살펴 보았습니다.

이 팁을 쓸 때 서비스를 직접 가리 키기 훨씬 쉬운 사본을 SQLCMD.exe만들고 교체 하는 더 번거로운 접근 방식을 사용했습니다 .sqlwriter.exeSQLCMD.exe


SQL Server 서비스를 중단 할 여유가있는 경우

단일 사용자 모드에서 인스턴스를 다시 시작해야하는 공식적으로 지원되는 Microsoft 경로가 있습니다.

dbatools.io 에는 SQL Server 관리를위한 Powershell 솔루션 인 다음 과 같은 기능도 있습니다 Reset-DbaAdmin.


여기서 보안은 주요 문제가 아닙니다.

많은 사람들이 소위 "취약점"을 "수정"하기 위해 Microsoft를 요구하고 있습니다. 이는 귀하가 올바르게 소유 한 SQL Server 인스턴스에 대한 액세스를 복구하기위한 유효한 접근 방법입니다. 이들은 모두 SQL Server가 상주하는 물리적 호스트에 대한 높은 권한을 요구합니다. 내가 여러 사람에게 말했듯이 개발자가 SQL Server 설치를 망칠 필요가 없다면 관리자로 만들지 마십시오.


이 방법으로 SA 계정을 활성화 할 수 있습니까? SA 계정이 비활성화되어 있고 공개 역할을 가진 AD 그룹이 있습니다. 또한 나열된 방법에 따라 인스턴스를 중단하지 않고 이러한 단계를 수행 할 수 있습니까? 내 서버가 현재 프로덕션 환경에 있기 때문에 묻습니다.
Sean Perkins

1
@Sean 예, sa를 다시 활성화하거나 다른 SQL 인증 계정을 만들거나 그룹이 아닌 AD 사용자를 더 높은 역할에 추가 할 수 있어야합니다. 이 중 어느 것도 SQL Server를 다시 시작하지 않아도됩니다 (필요한 경우 혼합 인증과 Windows 만 변경하는 경우).
Aaron Bertrand

프로세스를 시도하면 다음과 같은 오류가 발생합니다. 또한 나열된 유일한 계정의 스크린 샷을 만들었습니다. SQL 2012의 어느 시점에서이 방법을 허용하지 않는 변경이 있었습니까? 내 현재 버전은 11.0.3128 입니다. 또한 어떤 유형의 변경을 수행하든 관계없이 권한이 없다는 오류가 발생합니다. 마지막으로, 이것이 차이점을 의심하지만, 관리자 권한으로 PowerShell을 열고 cmd.exe를 실행 한 다음 psexec -i -s "C : \ ...... smss.exe"! [계정 생성 오류] ( i.stack.imgur.com/ITOja.p
Sean Perkins

첨부 된 그림에 현재 아무것도 표시되지 않지만 "SA"및 "NT AUTHORITY \ SYSTEM"이 유일한 계정으로 표시되어 있습니다. 내가받은 오류 메시지는 "사용자에게이 작업을 수행 할 권한이 없습니다. (Microsoft SQL Server, 오류 : 15247)"
Sean Perkins

@Sean PowerShell? PSExec은 PowerShell과 관련이 없습니다. 컴퓨터의 로컬 관리자입니까? 확실합니까?
Aaron Bertrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.