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 :
- Ouvrez une session en tant qu’administrateur.
- Sélectionnez Démarrerl’exécution>, tapez Control admintools, puis sélectionnez OK.
- Double-cliquez sur Stratégie de sécurité locale.
- 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.
- Dans la boîte de dialogue Propriétés des fichiers et répertoires de sauvegarde , sélectionnez Ajouter un utilisateur ou un groupe.
- 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 .
- 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.