Condividi tramite


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:

  1. Accedere come amministratore.
  2. Selezionare Avvia>esecuzione, digitare Control admintools e quindi selezionare OK.
  3. Fare doppio clic su Criteri di sicurezza locali.
  4. 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.
  5. Nella finestra di dialogo Proprietà file e directory di backup selezionare Aggiungi utente o gruppo.
  6. 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 .

  7. 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.