Instalacja programu SQL Server kończy się niepowodzeniem po usunięciu domyślnych praw użytkownika
Ten artykuł ułatwia rozwiązanie problemu występującego podczas instalowania lub uaktualniania programu Microsoft SQL Server po zaostrzeniu zabezpieczeń.
Dotyczy: SQL Server
Symptomy
Rozważmy scenariusz, w którym korzystasz z programu 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ć program SQL Server w systemie, należy dodać konto konfiguracji do lokalnej grupy administratorów.
W tym scenariuszu, jeśli spróbujesz zainstalować lub uaktualnić program 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 nie powiedzie się, zostanie wyświetlony następujący komunikat o błędzie:
Access is denied
Mogą być również wyświetlane komunikaty o błędach podobne do następujących w pliku 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.
Scenariusz 2: Jeśli nowa instalacja programu Microsoft SQL Server 2012 lub Microsoft SQL Server 2008 R2 zakończy się niepowodzeniem, 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 programu SQL Server 2012 lub nowszej wersji 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 16.
Ten problem występuje, ponieważ konto konfiguracji programu SQL Server nie ma uprawnień na serwerze plików, który hostuje
SeSecurityPrivilege
udział sieciowy.
Przyczyna
Jeśli uruchamiasz instalatora jako administrator lokalny, wymagane są następujące prawa użytkownika do pomyślnego uruchomienia instalacji:
Nazwa wyświetlana obiektu zasad grupy lokalnej | Prawo użytkownika |
---|---|
Tworzenie kopii zapasowych plików i katalogów | SeBackupPrivilege |
Debugowanie programów | SeDebugPrivilege |
Zarządzanie dziennikiem inspekcji i zabezpieczeń | SeSecurityPrivilege |
Uwaga 16.
Aby uzyskać więcej informacji na temat uprawnień wymaganych do zainstalowania programu 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 programu SQL Server z magazynem udziału 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ę Uruchom,> 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 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żytkowników lub grup wprowadź konto użytkownika, którego chcesz użyć do instalacji, a następnie wybierz przycisk OK dwa razy.
Uwaga 16.
Aby dodać konto użytkownika dla zasad debugowania programów i zarządzania inspekcją i dziennikiem 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 (FAQ)
SeSecurityPrivilege
Dlaczego jest wymagany na serwerze plików dla katalogu kopii zapasowej w udziale UNC?
To uprawnienie jest wymagane do pobrania list kontroli dostępu (ACL) w domyślnym katalogu kopii zapasowej, aby upewnić się, że konto usługi programu 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 zapasowej, aby w przypadku wykonania kopii zapasowej po instalacji wystąpił błąd (z powodu braku uprawnień).
Uwaga 16.
SeSecurityPrivilege
program jest wymagany do zmiany z get/set ACLs
katalogów i podfolderów. Jest to prawdą, nawet jeśli użytkownicy, którzy mają uprawnienia PEŁNA KONTROLA w katalogach, nie mają uprawnień do get/set OWNER
i inspekcji informacji z katalogu.
Dlaczego błąd opisany w scenariuszu 3 występuje tylko w programie Microsoft SQL Server 2012 i nowszych wersjach?
Począwszy od programu SQL Server 2012, firma Microsoft zapewnia obsługę plików danych i dzienników w udziale plików SMB. W ramach tej poprawy środowisko konfiguracji jest jeszcze bardziej ulepszone w celu zaostrzenia kontroli zabezpieczeń, dzięki czemu klienci nie napotykają błędów lub problemów z powodu niewystarczających uprawnień po instalacji. W wersjach przed programem SQL Server 2012 użytkownicy nadal mogą skonfigurować ścieżkę udziału sieciowego dla katalogu kopii zapasowej, jeśli konto usługi SQL nie ma uprawnień do uruchamiania kopii zapasowej. Jednak w tej sytuacji użytkownicy wystąpią błędy 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> *
Na 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ń.