L'installazione di SQL Server ha esito negativo se l'account di installazione non dispone di determinati diritti utente

Questo articolo consente di risolvere il problema che si verifica quando si installa o si aggiorna Microsoft SQL Server dopo aver stretto la sicurezza.

Versione originale del prodotto:   SQL Server 2008, SQL Server 2008 R2, SQL Server 2012
Numero KB originale:   2000257

Sintomi

Si consideri lo scenario seguente. Per rafforzare la sicurezza, è necessario rimuovere alcuni diritti utente predefiniti per il gruppo Administrators locale in un sistema operativo Windows. In preparazione per la configurazione di SQL Server in questo sistema, è necessario aggiungere l'account di installazione al gruppo Administrators locale.

In questo scenario, se si installa o si aggiorna SQL Server, il processo di installazione potrebbe avere esito negativo e si ricevono vari messaggi di errore come indicato nelle sezioni seguenti.

  • Scenario 1: Per una nuova installazione, il programma di installazione ha esito negativo e viene visualizzato il messaggio di errore seguente:

    L'accesso è inoltre negato, è possibile notare i 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: azione di configurazione non riuscita per feature SQL_Engine_Core_Inst durante la temporizzazione ConfigRC 2009-01-02 13:00:20 Slp: accesso negato 2009-01-02 13:00:20 Slp: operazione di configurazione non riuscita per le funzionalità SQL_Engine_Core_Inst durante il timing ConfigRC e lo scenario ConfigRC. 2009-01-02 13:00:20 Slp: System. ComponentModel. Win32exception: accesso negato 2009-01-02 13:00:20 Slp: in 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: all'Microsoft.SqlServer.Configuration. SqlEngine. SqlServerServiceSCM. StartSqlServer (String [] parameters) 2009-01-02 13:00:20 Slp: all'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 2 actionData, PublicConfigurationBase spcb) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary 2 ActionData, PublicConfigurationBase spcbCurrent) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute (ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary ' 2 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: origine: System. 2009-01-02 13:00:20 Slp: messaggio: accesso negato.

  • Scenario 2 : l'aggiornamento a SQL Server 2008 riporterà il messaggio di errore seguente nella Engine_SqlEngineHealthCheck regola:

    Nome della regola: Engine_SqlEngineHealthCheck Descrizione della regola: verifica se il servizio SQL Server può essere riavviato; o per un'istanza in cluster, se la risorsa SQL Server è online. Risultato: errore del messaggio/azione correttiva: il servizio SQL Server non può essere riavviato; in alternativa, per un'istanza in cluster, la risorsa SQL Server non è online inoltre, è possibile notare messaggi di errore simili ai seguenti nel Detail.txt file 2009-05-27 17:50:20 SQLEngine:: controllo del checkpoint del motore ' GetSqlServerProcessHandle_1' 2009-05-27 17:50:20 SQLEngine:--SqlServerServiceSCM: Waiting for NT Event ' Global\sqlserverRecComplete $ SQL10' to be created 2009-05-27 17:50:22 SQLEngine:--SqlServerServiceSCM: Waiting for NT Event ' Global\sqlserverRecComplete $ SQL10' or SQL Process handle to be signaled 2009-05-27 17:50:22 SQLEngine:--FacetSqlEngineHealthCheck: Engine_SqlEngineHealthCheck: Error: Access is denied

  • Scenario3: Esito negativo di una nuova installazione di SQL Server 2012 o SQL Server 2008 R2

    Quando si tenta di installare una nuova istanza di SQL Server 2012 o SQL Server 2008 R2 viene visualizzato il messaggio di errore seguente:

    Regola "privilegi dell'account di installazione" non riuscita. L'account che esegue il programma di installazione di SQL Server non dispone di uno o tutti i diritti seguenti: il diritto di eseguire il backup di file e directory, il diritto di gestire il controllo e il registro di sicurezza e il diritto di eseguire il debug dei programmi. Per continuare, utilizzare un account con entrambi i diritti.

  • Scenario 4 : l'installazione di SQL Server 2012 o di un'istanza successiva ha esito negativo quando si specifica una condivisione di rete (percorso UNC) per il percorso della directory di backup. Quando si verifica questo problema, viene visualizzato il messaggio di errore seguente:

    L'account di installazione di SQL Server non dispone del privilegio SeSecurityPrivilege sul file server specificato nel percorso <UNC backup location> . Questo privilegio è necessario nell'azione di impostazione della sicurezza delle cartelle del programma di installazione di SQL Server. Per concedere questo privilegio, utilizzare la console dei criteri di sicurezza locali su questo file server per aggiungere l'account di installazione di SQL Server a "gestione dei criteri di controllo e del registro di sicurezza". Questa impostazione è disponibile nella sezione "assegnazioni di diritti utente" in Criteri locali nella console dei criteri di sicurezza locali.

    Nota

    Questo problema si verifica perché l'account di installazione di SQL Server non dispone SeSecurityPrivilege di autorizzazioni per il file server che ospita la condivisione di rete.

Causa

Si tratta di un comportamento legato alla progettazione del prodotto. Oltre a aggiungere l'account utente che esegue il programma di installazione come amministratore locale, l'account utente Setup richiede che i diritti utente predefiniti seguenti per il programma di installazione siano stati completati correttamente.

Nome visualizzato dell'oggetto Criteri locali A destra dell'utente
File e directory di backup SeBackupPrivilege
Programmi di debug SeDebugPrivilege
Gestire il controllo e il registro di sicurezza SeSecurityPrivilege

Nota

Per ulteriori informazioni sulle autorizzazioni necessarie per l'installazione di SQL Server, vedere la sezione relativa ai prerequisiti degli articoli MSDN seguenti:

Inoltre, se si utilizza la condivisione file SMB come opzione di archiviazione per directory di dati o per qualsiasi altra directory (directory del database utente, directory del registro dei database degli utenti, directory TempDB, directory del registro di TempDB o directory di backup), sono necessarie le autorizzazioni aggiuntive seguenti per l'account di installazione su SMB Fileserver come illustrato nell'articolo MSDN seguente:Install SQL Server with SMB FileShare storage

Cartella della condivisione di rete SMB CONTROLLO COMPLETO Account di installazione di SQL
Cartella della condivisione di rete SMB CONTROLLO COMPLETO Account del servizio SQL Server e SQL Server Agent
SMB Fileserver SeSecurityPrivilege Account di installazione di SQL

Risoluzione

Per aggiungere i diritti all'account di amministratore locale, eseguire la procedura seguente:

  1. Accedere al computer come utente che dispone di credenziali amministrative.
  2. Fare clic sul pulsante Start, scegliere Esegui, digitare Control admintools e quindi fare clic su OK.
  3. Fare doppio clic su criteri di protezione locali.
  4. Nella finestra di dialogo impostazioni di sicurezza locali fare clic su criteri locali, fare doppio clic su 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 fare clic su Aggiungi utente o gruppo.
  6. Nella finestra di dialogo Seleziona utenti o gruppi Digitare l'account utente utilizzato per il programma di installazione e quindi fare clic su OK due volte.
  7. Ripetere la procedura per gli altri due criteri menzionati nella sezione causa .
  8. Scegliere Esci dal menu file per chiudere la finestra di dialogo impostazioni di protezione locali .

Ulteriori informazioni

  • Per controllare l'elenco dei privilegi attualmente associati all'account utilizzato per l'installazione, è possibile utilizzare lo strumento AccessChk.exe. Per scaricare lo strumento, vedere AccessChk v 6.13.

    Utilizzo: accesschk.exe-a <setup account> *

    Per 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
    
  • Configurare gli account di servizio di Windows e le autorizzazioni

  • Domande frequenti

    • Perché SeSecurityPrivilege è necessario nel file server per la directory di backup sulla condivisione UNC?

      Questa autorizzazione è necessaria per recuperare gli elenchi ACL nella directory di backup predefinita per assicurarsi che l'account di servizio di SQL Server disponga delle autorizzazioni complete per la cartella. In questo modo vengono impostati anche gli ACL se mancano le autorizzazioni per l'account del servizio SQL, affinché sia possibile eseguire un backup nella directory. Il programma di installazione esegue questi controlli per la directory di backup predefinita in modo che, se il backup viene eseguito nell'installazione predefinita di directorypost, l'utente non verifichi un errore o un problema (a causa delle autorizzazioni mancanti) quando si esegue il backup nella directory predefinita.

      Nota

      SeSecurityPrivilege è necessario per modificare gli elenchi ACL di get/set dalle directory e dalle sottocartelle. Questo è il caso perché anche gli utenti che dispongono di autorizzazioni di controllo completo per le directory non dispongono delle autorizzazioni per ottenere/impostare il proprietario e le informazioni di controllo dalla directory.

    • Perché l'errore descritto nello scenario 4 occuronlyin SQL Server 2012 e versioni successive di SQL Server?

      In SQL Server 2012 e versioni successive, Microsoft ha avviato il supporto dei file di dati e di log nella condivisione file SMB. Nell'ambito di questo miglioramento, l'esperienza di installazione è stata ulteriormente migliorata per stringere i controlli in modo che i clienti non incontrino errori o problemi a causa di un'autorizzazione insufficiente dopo l'installazione. Nelle versioni precedenti a SQL Server 2012 i clienti possono comunque impostare il percorso della condivisione di rete per la directory di backup quando l'account di servizio SQL non dispone delle autorizzazioni per eseguire il backup. Tuttavia, si verificherà un errore dopo l'installazione in questa situazione. Questi scenari sono ora impediti quando si avvia il controllo di installazione di SQL 2012 su una condivisione di rete.