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:
- Zaloguj się jako administrator.
- Wybierz pozycję Rozpocznij>uruchamianie, wpisz Control admintools, a następnie wybierz przycisk OK.
- Kliknij dwukrotnie pozycję Zasady zabezpieczeń lokalnych.
- 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.
- W oknie dialogowym Właściwości plików kopii zapasowych i katalogów wybierz pozycję Dodaj użytkownika lub grupę.
- 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 .
- 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ń.