기본 사용자 권한이 제거된 후 SQL Server 설치 실패

이 문서는 보안을 강화한 후 Microsoft SQL Server 설치하거나 업그레이드할 때 발생하는 문제를 resolve 데 도움이 됩니다.

적용 대상: SQL Server

증상

Windows에서 Microsoft SQL Server 실행하는 시나리오를 고려합니다. 보안을 강화하려면 로컬 관리자 그룹에서 일부 기본 사용자 권한을 제거합니다. 시스템에서 SQL Server 설정하려면 로컬 관리자 그룹에 설정 계정을 추가합니다.

이 시나리오에서 SQL Server 설치하거나 업그레이드하려고 하면 설치 프로세스가 실패하고 다음과 같이 나열된 메시지 중 하나와 유사한 오류 메시지가 나타날 수 있습니다.

  • 시나리오 1: 새 설치에 실패하면 다음 오류 메시지가 표시됩니다.

    Access is denied
    

    Detail.txt 파일에서 다음과 유사한 오류 메시지를 받을 수도 있습니다.

    2009-01-02 13:00:17 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' to be created  
    2009-01-02 13:00:20 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' or sql process handle to be signaled  
    2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.  
    2009-01-02 13:00:20 Slp: Access is denied  
    2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.  
    2009-01-02 13:00:20 Slp: System.ComponentModel.Win32Exception: Access is denied  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.OpenProcessHandle()  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.get_Handle()  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceBase.WaitSqlServerStart(Process processSql)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceSCM.StartSqlServer(String[] parameters)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerStartup.StartSQLServerForInstall(String sqlCollation, String masterFullPath, Boolean isConfiguringTemplateDBs)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.ConfigSQLServerSystemDatabases(EffectiveProperties properties, Boolean isConfiguringTemplateDBs, Boolean useInstallInputs)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.DoCommonDBStartConfig(ConfigActionTiming timing)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.Install(ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcb)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream)  
    2009-01-02 13:00:20 Slp: Exception: System.ComponentModel.Win32Exception.  
    2009-01-02 13:00:20 Slp: Source: System.  
    2009-01-02 13:00:20 Slp: Message: Access is denied.  
    
  • 시나리오 2: Microsoft SQL Server 2012 또는 Microsoft SQL Server 2008 R2의 새 설치가 실패하면 다음 오류 메시지 중 하나가 표시됩니다.

    Rule "Setup account privileges" failed.  
    
    The account that is running SQL Server Setup doesn't have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the right to debug programs. To continue, use an account with both of these rights.
    
  • 시나리오 3: 백업 디렉터리 위치에 대한 UNC 경로(네트워크 공유)를 지정할 때 SQL Server 2012 이상 버전의 설치가 실패하면 다음 오류 메시지가 표시됩니다.

    SQL Server setup account does not have the `SeSecurityPrivilege` on the specified file server in the path *\<UNC backup location>*. This privilege is required to set folder security in the SQL Server setup program. To grant this privilege, use the Local Security Policy console on this file server to add SQL Server setup account to **Manage auditing and security log** policy. This setting is available in the **User Rights Assignments** section under Local Policies in the Local Security Policy console.
    

    참고

    이 문제는 SQL Server 설치 계정에 네트워크 공유를 SeSecurityPrivilege 호스트하는 파일 서버에 대한 권한이 없기 때문에 발생합니다.

원인

로컬 관리자로 설치 프로그램을 실행하는 경우 설치 프로그램을 성공적으로 실행하려면 다음 사용자 권한이 필요합니다.

로컬 그룹 정책 개체 표시 이름 사용자 권한
백업 파일 및 디렉터리 SeBackupPrivilege
프로그램 디버그 SeDebugPrivilege
감사 및 보안 로그 관리 SeSecurityPrivilege

참고

SQL Server 설치하는 데 필요한 권한에 대한 자세한 내용은 다음 문서의 "필수 구성 요소" 섹션을 참조하세요.

데이터 디렉터리 또는 다른 디렉터리(사용자 데이터베이스 디렉터리, 사용자 데이터베이스 로그 디렉터리, TempDB 디렉터리, TempDB 로그 디렉터리 또는 백업 디렉터리)에 대한 스토리지 옵션이 SMB 파일 공유를 사용하는 경우 설치 계정에 SMB 파일 공유 스토리지를 사용하여 SQL Server 설치에 설명된 대로 SMB 파일 서버에 대해 다음과 같은 추가 권한이 필요합니다.

SMB 네트워크 공유 폴더 모든 권한 SQL 설치 계정
SMB 네트워크 공유 폴더 모든 권한 SQL Server 및 SQL Server 에이전트 서비스 계정
SMB 파일 서버 SeSecurityPrivilege SQL 설정 계정

해결 방법

설정 계정에 권한을 추가하려면 다음 단계를 수행합니다.

  1. 관리자 권한으로 로그온합니다.
  2. 실행 시작을> 선택하고 Control admintools를 입력한 다음 확인을 선택합니다.
  3. 로컬 보안 정책을 두 번 클릭합니다.
  4. 로컬 보안 설정 대화 상자에서 로컬 정책을 선택하고 사용자 권한 할당을 연 다음 백업 파일 및 디렉터리를 두 번 클릭합니다.
  5. 백업 파일 및 디렉터리 속성 대화 상자에서 사용자 또는 그룹 추가를 선택합니다.
  6. 사용자 또는 그룹 선택 대화 상자에서 설정에 사용할 사용자 계정을 입력한 다음 확인을 두 번 선택합니다.

    참고

    디버그 프로그램감사 및 보안 로그 정책 관리에 대한 사용자 계정을 추가하려면 1~6단계를 수행합니다.

  7. 파일 메뉴에서 로컬 보안 설정 대화 상자를 연 다음 종료를 선택하여 닫습니다.

질문과 대답(FAQ)

SeSecurityPrivilege UNC 공유의 백업 디렉터리에 대한 파일 서버에 필요한 이유는 무엇인가요?

이 권한은 SQL Server 서비스 계정에 폴더에 대한 전체 권한이 있는지 확인하기 위해 기본 백업 디렉터리에서 ACL(Access Control Lists)을 검색하는 데 필요합니다. 또한 디렉터리의 백업을 실행할 수 있도록 SQL 서비스 계정에 대한 권한이 없는 경우 서비스 계정은 ACL을 설정합니다. 설치 프로그램은 설치 후 백업이 수행되는 경우(사용 권한 누락으로 인해) 오류가 발생하지 않도록 기본 백업 디렉터리에 대한 이러한 검사를 실행합니다.

참고

SeSecurityPrivilege 는 디렉터리 및 하위 폴더에서 를 변경하는 get/set ACLs 데 필요합니다. 디렉터리에 대한 FULL CONTROL 권한이 있는 사용자에게 디렉터리에 대한 권한 get/set OWNER 및 감사 정보가 없는 경우에도 마찬가지입니다.

시나리오 3에 설명된 오류는 왜 Microsoft SQL Server 2012 이상 버전에서만 발생하나요?

2012년 SQL Server Microsoft는 SMB 파일 공유의 데이터 및 로그 파일을 지원합니다. 이러한 개선의 일환으로 설치 후 권한이 부족하여 고객이 오류 또는 문제가 발생하지 않도록 보안 검사를 강화하기 위해 설치 환경이 더욱 강화되었습니다. 2012년 SQL Server 이전 버전에서는 SQL 서비스 계정에 백업을 실행할 수 있는 권한이 없는 경우에도 사용자가 백업 디렉터리에 대한 네트워크 공유 경로를 설정할 수 있습니다. 그러나 이러한 사용자는 이 상황에서 설치 후 오류가 발생합니다. 이제 네트워크 공유에서 SQL 2012 설치 검사 시작할 때 이러한 시나리오가 방지됩니다.

추가 정보

  • 현재 설정 계정과 연결된 권한 목록을 검사 AccessChk.exe 도구를 사용합니다. 이 도구를 다운로드하려면 AccessChk v6.13을 참조하세요.

    사용 현황: accesschk.exe- a \<setup account> *

    예: c:\tools\accesschk.exe -a testdc\setupaccount *

      Sample output:
             SeSecurityPrivilege
              SeBackupPrivilege
              SeRestorePrivilege
              SeSystemtimePrivilege
              SeShutdownPrivilege
              SeRemoteShutdownPrivilege
              SeTakeOwnershipPrivilege
              SeDebugPrivilege
              SeSystemEnvironmentPrivilege
              SeSystemProfilePrivilege
              SeProfileSingleProcessPrivilege
              SeIncreaseBasePriorityPrivilege
              SeLoadDriverPrivilege
              SeCreatePagefilePrivilege
              SeIncreaseQuotaPrivilege
              SeChangeNotifyPrivilege
              SeUndockPrivilege
              SeManageVolumePrivilege
              SeImpersonatePrivilege
              SeCreateGlobalPrivilege
              SeTimeZonePrivilege
              SeCreateSymbolicLinkPrivilege
              SeInteractiveLogonRight
              SeNetworkLogonRight
              SeBatchLogonRight
              SeRemoteInteractiveLogonRight
    
  • 자세한 내용은 Windows 서비스 계정 및 권한 구성을 참조하세요.