SQL Server установка завершается сбоем после удаления прав пользователя по умолчанию

Эта статья поможет устранить проблему, которая возникает при установке или обновлении Microsoft SQL Server после ужесточения безопасности.

Область применения: SQL Server

Симптомы

Рассмотрим сценарий, в котором вы используете Microsoft SQL Server в Windows. Чтобы повысить безопасность, удалите некоторые права пользователей по умолчанию из локальной группы администраторов. Чтобы настроить 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. Если установка SQL Server 2012 или более поздней версии завершается сбоем при указании сетевого ресурса (UNC-пути) для расположения каталога резервного копирования, появляется следующее сообщение об ошибке:

    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. В меню Файл откройте диалоговое окно Локальные параметры безопасности и выберите Выйти , чтобы закрыть.

Часто задаваемые вопросы

Почему на файловом сервере требуется SeSecurityPrivilege каталог резервного копирования в UNC-ресурсе?

Это разрешение требуется для получения контроль доступа Списки (ACL) в каталоге резервного копирования по умолчанию, чтобы убедиться, что учетная запись службы SQL Server имеет полные разрешения на папку. Учетная запись службы также задает списки управления доступом, если для учетной записи службы SQL отсутствуют разрешения, чтобы можно было запустить резервную копию каталога. Программа установки выполняет эти проверки для каталога резервного копирования по умолчанию, чтобы при выполнении резервного копирования после установки не возникла ошибка (из-за отсутствия разрешений).

Примечание.

SeSecurityPrivilege требуется для изменения get/set ACLs из каталогов и вложенных папок. Это справедливо, даже если у пользователей с разрешениями FULL CONTROL в каталогах нет разрешений на доступ к get/set OWNER данным аудита из каталога.

Почему ошибка, описанная в сценарии 3, возникает только в Microsoft SQL Server 2012 и более поздних версиях?

Начиная с SQL Server 2012 года корпорация Майкрософт предоставляет поддержку файлов данных и журналов в общей папке SMB. В рамках этого улучшения интерфейс настройки еще больше улучшается, чтобы ужесточить проверки безопасности, чтобы клиенты не сталкивались с ошибками или проблемами из-за нехватки разрешений после установки. В версиях до SQL Server 2012 пользователи по-прежнему могут настроить путь к сетевому ресурсу для каталога резервного копирования, если учетная запись службы SQL не имеет разрешений на выполнение резервного копирования. Однако в этой ситуации эти пользователи будут сталкиваться с ошибкой после установки. Эти сценарии теперь запрещены при запуске установки SQL 2012 проверка в общей сетевой папке.

Дополнительная информация

  • Чтобы проверка список привилегий, которые в настоящее время связаны с учетной записью установки, используйте средствоAccessChk.exe. Чтобы скачать это средство, см. статью AccessChk версии 6.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 и разрешений.