SQL Server'installazione non riesce dopo la rimozione dei diritti utente predefiniti
Questo articolo consente di risolvere un problema che si verifica quando si installa o si aggiorna Microsoft SQL Server dopo aver rafforzato la sicurezza.
Si applica a: SQL Server
Sintomi
Si consideri lo scenario in cui si esegue Microsoft SQL Server in Windows. Per rafforzare la sicurezza, rimuovere alcuni diritti utente predefiniti dal gruppo administrators locale. Per configurare SQL Server nel sistema, aggiungere l'account di installazione al gruppo administrators locale.
In questo scenario, se si tenta di installare o aggiornare SQL Server, il processo di installazione ha esito negativo e potrebbe essere visualizzato un messaggio di errore simile a uno dei messaggi elencati di seguito:
Scenario 1: Se una nuova installazione non riesce, viene visualizzato il messaggio di errore seguente:
Access is denied
È anche possibile ricevere messaggi di errore simili ai seguenti nel file 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.
Scenario 2: Se una nuova installazione di Microsoft SQL Server 2012 o Microsoft SQL Server 2008 R2 ha esito negativo, viene visualizzato uno dei messaggi di errore seguenti:
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.
Scenario 3: Se l'installazione di SQL Server 2012 o una versione successiva non riesce quando si specifica una condivisione di rete (percorso UNC) per il percorso della directory di backup, viene visualizzato il messaggio di errore seguente:
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.
Nota
Questo problema si verifica perché l'account di installazione SQL Server non dispone delle
SeSecurityPrivilege
autorizzazioni nel file server che ospita la condivisione di rete.
Causa
Se si esegue l'installazione come amministratore locale, è necessario disporre dei diritti utente seguenti per l'esecuzione corretta dell'installazione:
Nome visualizzato oggetto Criteri di gruppo locale | Diritto utente |
---|---|
Backup di file e directory | SeBackupPrivilege |
Eseguire il debug di programmi | SeDebugPrivilege |
Gestire il log di controllo e sicurezza | SeSecurityPrivilege |
Nota
Per altre informazioni sulle autorizzazioni necessarie per installare SQL Server, vedere la sezione "Prerequisiti" negli articoli seguenti:
Se un'opzione di archiviazione per la directory dati o altre directory (directory del database utente, directory del log del database utente, directory TempDB, directory di log TempDB o directory di backup) usa la condivisione file SMB, l'account di installazione richiede le autorizzazioni aggiuntive seguenti nel file server SMB, come descritto in Installare SQL Server con archiviazione con condivisione file SMB.
Cartella di condivisione di rete SMB | CONTROLLO COMPLETO | Account di installazione SQL |
---|---|---|
Cartella di condivisione di rete SMB | CONTROLLO COMPLETO | account del servizio SQL Server e SQL Server Agent |
File server SMB | SeSecurityPrivilege |
Account di installazione SQL |
Risoluzione
Per aggiungere i diritti all'account di installazione, seguire questa procedura:
- Accedere come amministratore.
- Selezionare Avvia>esecuzione, digitare Control admintools e quindi selezionare OK.
- Fare doppio clic su Criteri di sicurezza locali.
- Nella finestra di dialogo Impostazioni di sicurezza locale selezionare Criteri locali, aprire Assegnazione diritti utente e quindi fare doppio clic su Backup file e directory.
- Nella finestra di dialogo Proprietà file e directory di backup selezionare Aggiungi utente o gruppo.
- Nella finestra di dialogo Seleziona utente o gruppi immettere l'account utente da usare per l'installazione e quindi selezionare OK due volte.
Nota
Per aggiungere l'account utente per i criteri Di debug eGestisci log di controllo e sicurezza , eseguire i passaggi da 1 a 6 .
- Dal menu File aprire la finestra di dialogo Impostazioni di sicurezza locale e quindi selezionare Esci per chiudere.
Domande frequenti
Perché è SeSecurityPrivilege
necessario nel file server per la directory di backup nella condivisione UNC?
Questa autorizzazione è necessaria per recuperare Controllo di accesso Elenchi (ACL) nella directory di backup predefinita per assicurarsi che l'account del servizio SQL Server disponga delle autorizzazioni complete per la cartella. L'account del servizio imposta anche gli elenchi di controllo di accesso se mancano autorizzazioni per l'account del servizio SQL in modo che sia possibile eseguire un backup della directory. Il programma di installazione esegue questi controlli per la directory di backup predefinita in modo che, se viene eseguito un backup dopo l'installazione, non si verificherà un errore (a causa di autorizzazioni mancanti).
Nota
SeSecurityPrivilege
è necessario modificare da get/set ACLs
directory e sottocartelle. Questo vale anche se gli utenti che dispongono di autorizzazioni FULL CONTROL per le directory non dispongono delle autorizzazioni per get/set OWNER
e controllare le informazioni dalla directory.
Perché l'errore descritto nello scenario 3 si verifica solo in Microsoft SQL Server 2012 e versioni successive?
A partire da SQL Server 2012, Microsoft fornisce il supporto per i file di dati e di log nella condivisione file SMB. Come parte di questo miglioramento, l'esperienza di configurazione è ulteriormente migliorata per rafforzare i controlli di sicurezza in modo che i clienti non riscontrino errori o problemi a causa di autorizzazioni insufficienti dopo l'installazione. Nelle versioni precedenti SQL Server 2012, gli utenti possono comunque configurare il percorso di condivisione di rete per la directory di backup se l'account del servizio SQL non dispone delle autorizzazioni per eseguire un backup. Tuttavia, questi utenti riscontrano un errore dopo l'installazione in questa situazione. Questi scenari vengono ora impediti quando si avvia il controllo dell'installazione di SQL 2012 in una condivisione di rete.
Ulteriori informazioni
Per controllare l'elenco dei privilegi attualmente associati all'account di installazione, usare lo strumento AccessChk.exe . Per scaricare questo strumento, vedere AccessChk v6.13.
Utilizzo:
accesschk.exe- a \<setup account> *
Ad esempio:
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
Per altre informazioni, vedere Configurare gli account e le autorizzazioni del servizio Windows.