Udostępnij za pośrednictwem


SQL Server instalacja kończy się niepowodzeniem po usunięciu domyślnych praw użytkownika

Ten artykuł pomaga rozwiązać problem występujący podczas instalowania lub uaktualniania usługi Microsoft SQL Server po zaostrzeniu zabezpieczeń.

Dotyczy: SQL Server

Symptomy

Rozważ scenariusz, w którym korzystasz z usługi Microsoft SQL Server w systemie Windows. Aby zaostrzyć zabezpieczenia, należy usunąć niektóre domyślne prawa użytkownika z lokalnej grupy administratorów. Aby skonfigurować SQL Server w systemie, należy dodać konto konfiguracji do lokalnej grupy administratorów.

W tym scenariuszu, jeśli spróbujesz zainstalować lub uaktualnić SQL Server, proces instalacji zakończy się niepowodzeniem i może zostać wyświetlony komunikat o błędzie podobny do jednego z komunikatów wymienionych w następujący sposób:

  • Scenariusz 1: Jeśli nowa instalacja zakończy się niepowodzeniem, zostanie wyświetlony następujący komunikat o błędzie:

    Access is denied
    

    W pliku Detail.txt mogą również zostać wyświetlone komunikaty o błędach podobne do następujących:

    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.  
    
  • Scenariusz 2: Jeśli nowa instalacja programu Microsoft SQL Server 2012 lub Microsoft SQL Server 2008 R2 nie powiedzie się, zostanie wyświetlony jeden z następujących komunikatów o błędach:

    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.
    
  • Scenariusz 3: Jeśli instalacja SQL Server wersji 2012 lub nowszej zakończy się niepowodzeniem po określeniu udziału sieciowego (ścieżki UNC) dla lokalizacji katalogu kopii zapasowej, zostanie wyświetlony następujący komunikat o błędzie:

    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.
    

    Uwaga

    Ten problem występuje, ponieważ konto konfiguracji SQL Server nie ma SeSecurityPrivilege uprawnień na serwerze plików hostującym udział sieci.

Przyczyna

W przypadku uruchamiania konfiguracji jako administrator lokalny wymagane są następujące prawa użytkownika do pomyślnego uruchomienia instalatora:

Nazwa wyświetlana obiektu zasady grupy lokalnego Prawo użytkownika
Tworzenie kopii zapasowych plików i katalogów SeBackupPrivilege
Programy debugowania SeDebugPrivilege
Zarządzanie inspekcją i dziennikami zabezpieczeń SeSecurityPrivilege

Uwaga

Aby uzyskać więcej informacji na temat uprawnień wymaganych do zainstalowania SQL Server, zobacz sekcję "Wymagania wstępne" w następujących artykułach:

Jeśli opcja magazynu dla katalogu danych lub innych katalogów (katalog bazy danych użytkownika, katalog dziennika bazy danych użytkownika, katalog tempDB, katalog dziennika bazy danych TempDB lub katalog kopii zapasowej) używa udziału plików SMB, konto instalatora wymaga następujących dodatkowych uprawnień na serwerze plików SMB zgodnie z opisem w temacie Instalowanie SQL Server z magazynem udziałów plików SMB.

Folder udziału sieciowego protokołu SMB PEŁNA KONTROLA Konto instalatora SQL
Folder udziału sieciowego protokołu SMB PEŁNA KONTROLA konto usługi SQL Server i SQL Server Agent
Serwer plików SMB SeSecurityPrivilege Konto konfiguracji SQL

Rozwiązanie

Aby dodać prawa do konta konfiguracji, wykonaj następujące kroki:

  1. Zaloguj się jako administrator.
  2. Wybierz pozycję Rozpocznij>uruchamianie, wpisz Control admintools, a następnie wybierz przycisk OK.
  3. Kliknij dwukrotnie pozycję Zasady zabezpieczeń lokalnych.
  4. W oknie dialogowym Ustawienia zabezpieczeń lokalnych wybierz pozycję Zasady lokalne, otwórz pozycję Przypisanie praw użytkownika, a następnie kliknij dwukrotnie pozycję Pliki kopii zapasowej i katalogi.
  5. W oknie dialogowym Właściwości plików kopii zapasowych i katalogów wybierz pozycję Dodaj użytkownika lub grupę.
  6. W oknie dialogowym Wybieranie użytkownika lub grup wprowadź konto użytkownika, którego chcesz użyć do instalacji, a następnie dwukrotnie wybierz przycisk OK .

    Uwaga

    Aby dodać konto użytkownika dla zasad debugowania programów i zarządzania inspekcją i dziennikami zabezpieczeń , wykonaj kroki od 1 do 6 .

  7. W menu Plik otwórz okno dialogowe Ustawienia zabezpieczeń lokalnych , a następnie wybierz pozycję Zakończ , aby zamknąć.

Często zadawane pytania

Dlaczego na serwerze plików jest SeSecurityPrivilege wymagany katalog kopii zapasowej w udziale UNC?

To uprawnienie jest wymagane do pobrania Access Control Listy (ACL) w domyślnym katalogu kopii zapasowych, aby upewnić się, że konto usługi SQL Server ma pełne uprawnienia do folderu. Konto usługi ustawia również listy ACL, jeśli brakuje uprawnień dla konta usługi SQL, aby można było uruchomić kopię zapasową katalogu. Program instalacyjny uruchamia te testy domyślnego katalogu kopii zapasowych, aby w przypadku wykonania kopii zapasowej po instalacji nie wystąpił błąd (z powodu braku uprawnień).

Uwaga

SeSecurityPrivilege jest wymagane, aby zmienić get/set ACLs katalogi i podfoldery. Dzieje się tak nawet wtedy, gdy użytkownicy, którzy mają uprawnienia PEŁNA KONTROLA w katalogach, nie mają uprawnień do get/set OWNER i nie przeprowadzają inspekcji informacji z katalogu.

Dlaczego błąd opisany w scenariuszu 3 występuje tylko w usłudze Microsoft SQL Server 2012 i nowszych wersjach?

Począwszy od SQL Server 2012 r., firma Microsoft zapewnia obsługę plików danych i dzienników w udziale plików SMB. W ramach tego ulepszenia środowisko konfiguracji jest dodatkowo rozszerzane w celu zaostrzenia kontroli zabezpieczeń, aby klienci nie napotykali błędów lub problemów z powodu niewystarczających uprawnień po instalacji. W wersji wstępnej SQL Server 2012 użytkownicy nadal mogą skonfigurować ścieżkę udziału sieciowego dla katalogu kopii zapasowych, jeśli konto usługi SQL nie ma uprawnień do uruchamiania kopii zapasowej. Jednak w takiej sytuacji wystąpi błąd po instalacji. Te scenariusze są teraz blokowane podczas uruchamiania sprawdzania konfiguracji programu SQL 2012 w udziale sieciowym.

Więcej informacji

  • Aby sprawdzić listę uprawnień, które są obecnie skojarzone z kontem konfiguracji, użyj narzędzia AccessChk.exe . Aby pobrać to narzędzie, zobacz AccessChk v6.13.

    Użycie: accesschk.exe- a \<setup account> *

    Przykład: 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
    
  • Aby uzyskać więcej informacji, zobacz Konfigurowanie kont usług systemu Windows i uprawnień.