Condividi tramite


L'installazione di SQL Server ha esito negativo dopo la rimozione dei diritti utente predefiniti

Questo articolo illustra come risolvere un problema che si verifica durante l'installazione o l'aggiornamento di Microsoft SQL Server dopo aver stretto 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 al seguente nel file di 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 ha esito negativo 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.
    

    Note

    Questo problema si verifica perché l'account di installazione di SQL Server non dispone delle SeSecurityPrivilege autorizzazioni per il 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 dell'oggetto Criteri di gruppo locale Diritto utente
Eseguire il backup di file e directory SeBackupPrivilege
Programmi di debug SeDebugPrivilege
Gestire log di controllo e log di sicurezza SeSecurityPrivilege

Note

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 di dati o altre directory (directory del database utente, directory 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 per il file server SMB, come descritto in Installare SQL Server con l'archiviazione di condivisioni file SMB.

Cartella di condivisione di rete SMB CONTROLLO COMPLETO Account di installazione di SQL
Cartella di condivisione di rete SMB CONTROLLO COMPLETO Account del servizio SQL Server e SQL Server Agent
File server SMB SeSecurityPrivilege Account di configurazione DI 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 locali selezionare Criteri locali, aprire Assegnazione diritti utente e quindi fare doppio clic su File e directory di backup.
  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.

    Note

    Per aggiungere l'account utente per i programmi di debug e gestire i criteri di controllo e log di sicurezza, eseguire i passaggi da 1 a 6 .

  7. Dal menu File aprire la finestra di dialogo Impostazioni di sicurezza locali 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 le 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 un backup viene eseguito dopo l'installazione, non si verificherà un errore (a causa di autorizzazioni mancanti).

Note

SeSecurityPrivilege è necessario per modificare da get/set ACLs directory e sottocartelle. Ciò vale anche se gli utenti che dispongono di autorizzazioni FULL CONTROL per le directory non dispongono delle autorizzazioni per get/set OWNER e controllano 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 offre supporto per i file di dati e di log nella condivisione file SMB. Come parte di questo miglioramento, l'esperienza di configurazione è stata ulteriormente migliorata per rafforzare i controlli di sicurezza in modo che i clienti non verifichino errori o problemi a causa di autorizzazioni insufficienti dopo l'installazione. Nelle versioni precedenti a 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 account di servizio e autorizzazioni di Windows.