Partager via


L’installation de SQL Server échoue après la suppression des droits 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 semblable à l’un des messages répertoriés comme suit :

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

    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, vous recevez le message d’erreur suivant :

    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

    Ce problème se produit parce que le compte d’installation de SQL Server n’a pas les SeSecurityPrivilege 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 devez disposer des droits d’utilisateur suivants pour que l’installation s’exécute correctement :

Nom d’affichage de l’objet de stratégie de groupe local Droit de l’utilisateur
Fichiers et répertoires de sauvegarde SeBackupPrivilege
Déboguer des programmes SeDebugPrivilege
Gérer le journal d'audit et de sécurité SeSecurityPrivilege

Note

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 du journal de base de données utilisateur, répertoire TempDB, répertoire de journal 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 Compte de service SQL Server et 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. Connectez-vous en tant qu’administrateur.
  2. Sélectionnez Démarrer>l’exécution, tapez Admintools Control, 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 de sauvegarde et répertoires.
  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.

    Note

    Pour ajouter le compte d’utilisateur pour les programmes de débogage et gérer les stratégies d’audit et de 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é local, puis sélectionnez Quitter pour fermer.

Forum Aux Questions (FAQ)

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

Cette autorisation est requise pour récupérer les listes de contrôle d’accès (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).

Note

SeSecurityPrivilege est nécessaire pour modifier les get/set ACLs répertoires et les sous-dossiers. Cela est vrai même si les utilisateurs disposant d’autorisations FULL CONTROL sur les répertoires ne disposent pas des autorisations nécessaires pour get/set OWNER auditer et des informations à partir 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 ?

À compter de SQL Server 2012, Microsoft prend en charge les 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 améliorée pour renforcer les vérifications 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 n’a pas les autorisations nécessaires pour exécuter une sauvegarde. Toutefois, ces utilisateurs rencontrent une erreur après l’installation dans cette situation. Ces scénarios sont désormais empêchés lorsque vous démarrez la vérification de l’installation de SQL 2012 sur un partage réseau.

Plus d’informations

  • Pour vérifier 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 les comptes de service Windows et les autorisations.