SQL Server’installation échoue après la suppression des droits d’utilisateur par défaut

Cet article vous aide à résoudre un problème qui se produit lorsque vous installez ou mettez à niveau Microsoft SQL Server après avoir renforcé la sécurité.

S’applique à : SQL Server

Symptômes

Considérez le scénario dans lequel vous exécutez Microsoft SQL Server dans Windows. Pour renforcer la sécurité, vous supprimez certains droits d’utilisateur par défaut du groupe Administrateurs locaux. Pour configurer SQL Server sur le système, vous ajoutez le compte d’installation au groupe Administrateurs local.

Dans ce scénario, si vous essayez d’installer ou de mettre à niveau SQL Server, le processus d’installation échoue et vous pouvez recevoir un message d’erreur qui ressemble à l’un des messages répertoriés comme suit :

  • Scénario 1 : Si une nouvelle installation échoue, le message d’erreur suivant s’affiche :

    Access is denied
    

    Vous pouvez également recevoir des messages d’erreur qui ressemblent à ce qui suit dans le fichier 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.  
    
  • Scénario 2 : Si une nouvelle installation de Microsoft SQL Server 2012 ou Microsoft SQL Server 2008 R2 échoue, vous recevez l’un des messages d’erreur suivants :

    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.
    
  • Scénario 3 : Si l’installation de SQL Server 2012 ou d’une version ultérieure échoue lorsque vous spécifiez un partage réseau (chemin UNC) pour l’emplacement du répertoire de sauvegarde, le message d’erreur suivant s’affiche :

    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.
    

    Remarque

    Ce problème se produit car le compte d’installation SQL Server ne dispose SeSecurityPrivilege pas des autorisations sur le serveur de fichiers qui héberge le partage réseau.

Cause

Si vous exécutez le programme d’installation en tant qu’administrateur local, vous avez besoin des droits d’utilisateur suivants pour que l’installation s’exécute correctement :

Nom complet de l’objet stratégie de groupe local Droit d’utilisateur
Fichiers et répertoires de sauvegarde SeBackupPrivilege
Programmes de débogage SeDebugPrivilege
Gérer les journaux d’audit et de sécurité SeSecurityPrivilege

Remarque

Pour plus d’informations sur les autorisations requises pour installer SQL Server, consultez la section « Prérequis » dans les articles suivants :

Si une option de stockage pour le répertoire de données ou d’autres répertoires (répertoire de base de données utilisateur, répertoire des journaux de base de données utilisateur, répertoire TempDB, répertoire des journaux TempDB ou répertoire de sauvegarde) utilise le partage de fichiers SMB, le compte d’installation nécessite les autorisations supplémentaires suivantes sur le serveur de fichiers SMB, comme décrit dans Installer SQL Server avec le stockage de partage de fichiers SMB.

Dossier de partage réseau SMB CONTRÔLE TOTAL Compte d’installation SQL
Dossier de partage réseau SMB CONTRÔLE TOTAL SQL Server et compte de service SQL Server Agent
Serveur de fichiers SMB SeSecurityPrivilege Compte d’installation SQL

Résolution

Pour ajouter les droits au compte d’installation, procédez comme suit :

  1. Ouvrez une session en tant qu’administrateur.
  2. Sélectionnez Démarrerl’exécution>, tapez Control admintools, puis sélectionnez OK.
  3. Double-cliquez sur Stratégie de sécurité locale.
  4. Dans la boîte de dialogue Paramètres de sécurité locaux , sélectionnez Stratégies locales, ouvrez Attribution des droits utilisateur, puis double-cliquez sur Fichiers et répertoires de sauvegarde.
  5. Dans la boîte de dialogue Propriétés des fichiers et répertoires de sauvegarde , sélectionnez Ajouter un utilisateur ou un groupe.
  6. Dans la boîte de dialogue Sélectionner un utilisateur ou des groupes , entrez le compte d’utilisateur que vous souhaitez utiliser pour l’installation, puis sélectionnez OK deux fois.

    Remarque

    Pour ajouter le compte d’utilisateur pour les stratégies Programmes de débogage et Gérer l’audit et le journal de sécurité , effectuez les étapes 1 à 6 .

  7. Dans le menu Fichier , ouvrez la boîte de dialogue Paramètres de sécurité locaux , puis sélectionnez Quitter pour fermer.

Forum aux questions (FAQ)

Pourquoi est-il SeSecurityPrivilege requis sur le serveur de fichiers pour le répertoire de sauvegarde sur le partage UNC ?

Cette autorisation est nécessaire pour récupérer des Access Control Listes (ACL) sur le répertoire de sauvegarde par défaut pour vous assurer que le compte de service SQL Server dispose d’autorisations complètes sur le dossier. Le compte de service définit également les listes de contrôle d’accès si des autorisations sont manquantes pour le compte de service SQL afin qu’une sauvegarde du répertoire puisse être exécutée. Le programme d’installation exécute ces vérifications pour le répertoire de sauvegarde par défaut afin que si une sauvegarde est effectuée après l’installation, vous ne rencontrerez pas d’erreur (en raison d’autorisations manquantes).

Remarque

SeSecurityPrivilege est nécessaire pour remplacer les get/set ACLs répertoires et sous-dossiers. Cela est vrai même si les utilisateurs disposant d’autorisations FULL CONTROL sur les répertoires n’ont pas les autorisations nécessaires pour auditer get/set OWNER les informations de l’annuaire.

Pourquoi l’erreur décrite dans le scénario 3 se produit-elle uniquement dans Microsoft SQL Server 2012 et versions ultérieures ?

Depuis SQL Server 2012, Microsoft prend en charge les fichiers de données et les fichiers journaux sur le partage de fichiers SMB. Dans le cadre de cette amélioration, l’expérience d’installation est encore améliorée pour renforcer les contrôles de sécurité afin que les clients ne rencontrent pas d’erreurs ou de problèmes en raison d’autorisations insuffisantes après l’installation. Dans les versions antérieures SQL Server 2012, les utilisateurs peuvent toujours configurer le chemin du partage réseau pour le répertoire de sauvegarde si le compte de service SQL ne dispose pas des autorisations nécessaires pour exécuter une sauvegarde. Toutefois, ces utilisateurs rencontreront une erreur après l’installation dans cette situation. Ces scénarios sont désormais évités lorsque vous démarrez l’installation de SQL 2012 case activée sur un partage réseau.

Plus d’informations

  • Pour case activée la liste des privilèges actuellement associés au compte d’installation, utilisez l’outil AccessChk.exe. Pour télécharger cet outil, consultez AccessChk v6.13.

    Utilisation : accesschk.exe- a \<setup account> *

    Par exemple : 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
    
  • Pour plus d’informations, consultez Configurer des comptes de service Windows et des autorisations.