SQL Server installatie mislukt nadat de standaardgebruikersrechten zijn verwijderd

Dit artikel helpt u bij het oplossen van een probleem dat optreedt wanneer u Microsoft SQL Server installeert of upgradet nadat u de beveiliging hebt aangescherpt.

Van toepassing op: SQL Server

Symptomen

Overweeg het scenario waarin u Microsoft SQL Server uitvoert in Windows. Als u de beveiliging wilt verbeteren, verwijdert u enkele standaardgebruikersrechten uit de lokale beheerdersgroep. Als u SQL Server op het systeem wilt instellen, voegt u het installatieaccount toe aan de lokale beheerdersgroep.

Als u in dit scenario probeert SQL Server te installeren of bij te werken, mislukt het installatieproces en ontvangt u mogelijk een foutbericht dat lijkt op een van de volgende berichten:

  • Scenario 1: Als een nieuwe installatie mislukt, ontvangt u het volgende foutbericht:

    Access is denied
    

    U kunt ook foutberichten ontvangen die er ongeveer als volgt uitzien in het Detail.txt-bestand :

    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: Als een nieuwe installatie van Microsoft SQL Server 2012 of Microsoft SQL Server 2008 R2 mislukt, ontvangt u een van de volgende foutberichten:

    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: Als de installatie van SQL Server 2012 of een latere versie mislukt wanneer u een netwerkshare (UNC-pad) opgeeft voor de locatie van de back-upmap, ontvangt u het volgende foutbericht:

    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.
    

    Opmerking

    Dit probleem treedt op omdat het SQL Server setup-account niet beschikt over de SeSecurityPrivilege machtigingen op de bestandsserver die als host fungeert voor de netwerkshare.

Oorzaak

Als u de installatie uitvoert als lokale beheerder, hebt u de volgende gebruikersrechten nodig om de installatie goed uit te voeren:

Weergavenaam van lokaal groepsbeleid-object Gebruikersrecht
Back-up van bestanden en mappen SeBackupPrivilege
Fouten opsporen in programma's SeDebugPrivilege
Controle- en beveiligingslogboek beheren SeSecurityPrivilege

Opmerking

Zie de sectie Vereisten in de volgende artikelen voor meer informatie over de machtigingen die zijn vereist voor het installeren van SQL Server:

Als een opslagoptie voor gegevensmappen of andere mappen (gebruikersdatabasemap, gebruikersdatabaselogboekmap, TempDB-map, TempDB-logboekmap of back-upmap) gebruikmaakt van een SMB-bestandsshare, vereist het installatieaccount de volgende aanvullende machtigingen op de SMB-bestandsserver, zoals beschreven in Installeren SQL Server met SMB-bestandsshareopslag.

SMB-netwerksharemap VOLLEDIGE CONTROLE SQL Setup-account
SMB-netwerksharemap VOLLEDIGE CONTROLE SQL Server- en SQL Server Agent Service-account
SMB-bestandsserver SeSecurityPrivilege SQL-installatieaccount

Oplossing

Voer de volgende stappen uit om de rechten toe te voegen aan het installatieaccount:

  1. Meld u aan als beheerder.
  2. Selecteer Start>Run, typ Control admintoolsen selecteer ok.
  3. Dubbelklik op Lokaal beveiligingsbeleid.
  4. Selecteer in het dialoogvenster Lokale beveiligingsinstellingen de optie Lokaal beleid, open Toewijzing van gebruikersrechten en dubbelklik vervolgens op Back-upbestanden en -mappen.
  5. Selecteer in het dialoogvenster Eigenschappen van back-upbestanden en mappende optie Gebruiker of groep toevoegen.
  6. Voer in het dialoogvenster Gebruiker of groepen selecteren het gebruikersaccount in dat u wilt gebruiken voor de installatie en selecteer vervolgens twee keer OK .

    Opmerking

    Voer stap 1 tot en met 6 uit om het gebruikersaccount toe te voegen voor de foutopsporingsprogramma'sen Controle- en beveiligingslogboekbeleid beheren .

  7. Open in het menu Bestand het dialoogvenster Lokale beveiligingsinstellingen en selecteer afsluiten om te sluiten.

Veelgestelde vragen (veelgestelde vragen)

Waarom is SeSecurityPrivilege vereist op de bestandsserver voor de back-upmap op de UNC-share?

Deze machtiging is vereist voor het ophalen van Access Control Lijsten (ACL's) in de standaardback-upmap om ervoor te zorgen dat het SQL Server serviceaccount volledige machtigingen heeft voor de map. Het serviceaccount stelt ook de ACL's in als er machtigingen ontbreken voor het SQL-serviceaccount, zodat een back-up van de map kan worden uitgevoerd. Het installatieprogramma voert deze controles uit voor de standaardback-upmap, zodat als een back-up na de installatie wordt uitgevoerd, er geen fout optreedt (vanwege ontbrekende machtigingen).

Opmerking

SeSecurityPrivilege is vereist om de get/set ACLs te wijzigen van de mappen en submappen. Dit geldt zelfs als gebruikers met volledige beheermachtigingen voor de directory's geen machtigingen hebben voor get/set OWNER en controlegegevens uit de directory.

Waarom treedt de fout die wordt beschreven in scenario 3 alleen op in Microsoft SQL Server 2012 en latere versies?

Vanaf SQL Server 2012 biedt Microsoft ondersteuning voor gegevens- en logboekbestanden op de SMB-bestandsshare. Als onderdeel van deze verbetering wordt de installatie-ervaring verder verbeterd om de beveiligingscontroles te verscherpen, zodat klanten geen fouten of problemen ondervinden vanwege onvoldoende machtigingen na de installatie. In pre-SQL Server 2012-versies kunnen gebruikers nog steeds het netwerksharepad voor de back-upmap instellen als het SQL-serviceaccount geen machtigingen heeft om een back-up uit te voeren. Deze gebruikers ondervinden echter een fout na de installatie in deze situatie. Deze scenario's worden nu voorkomen wanneer u de installatiecontrole van SQL 2012 op een netwerkshare start.

Meer informatie

  • Als u de lijst met bevoegdheden wilt controleren die momenteel zijn gekoppeld aan het installatieaccount, gebruikt u het hulpprogrammaAccessChk.exe . Zie AccessChk v6.13 om dit hulpprogramma te downloaden.

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

    Bijvoorbeeld: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
    
  • Zie Windows-serviceaccounts en -machtigingen configureren voor meer informatie.