Dela via


SQL Server-installationen misslyckas när standardanvändarrättigheterna har tagits bort

Den här artikeln hjälper dig att lösa ett problem som uppstår när du installerar eller uppgraderar Microsoft SQL Server när du har skärpt säkerheten.

Gäller för: SQL Server

Symptom

Tänk på scenariot där du kör Microsoft SQL Server i Windows. För att öka säkerheten tar du bort vissa standardanvändarrättigheter från den lokala administratörsgruppen. Om du vill konfigurera SQL Server i systemet lägger du till installationskontot i den lokala administratörsgruppen.

Om du i det här scenariot försöker installera eller uppgradera SQL Server misslyckas installationsprocessen och du kan få ett felmeddelande som liknar ett av de meddelanden som visas på följande sätt:

  • Scenario 1: Om en ny installation misslyckas får du följande felmeddelande:

    Access is denied
    

    Du kan också få felmeddelanden som liknar följande i filen 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.  
    
  • Scenario 2: Om en ny installation av Microsoft SQL Server 2012 eller Microsoft SQL Server 2008 R2 misslyckas får du något av följande felmeddelanden:

    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: Om installationen av SQL Server 2012 eller en senare version misslyckas när du anger en nätverksresurs (UNC-sökväg) för platsen för säkerhetskopieringskatalogen får du följande felmeddelande:

    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.
    

    Kommentar

    Det här problemet beror på att konfigurationskontot för SQL Server inte har behörighet på SeSecurityPrivilege den filserver som är värd för nätverksresursen.

Orsak

Om du kör installationen som lokal administratör behöver du följande användarrättigheter för att installationen ska kunna köras:

Visningsnamn för lokalt grupprincip objekt Användarrätt
Säkerhetskopiera filer och kataloger SeBackupPrivilege
Felsöka program SeDebugPrivilege
Hantera gransknings- och säkerhetslogg SeSecurityPrivilege

Kommentar

Mer information om de behörigheter som krävs för att installera SQL Server finns i avsnittet "Förutsättningar" i följande artiklar:

Om ett lagringsalternativ för datakataloger eller andra kataloger (användardatabaskatalog, användardatabasloggkatalog, TempDB-katalog, TempDB-loggkatalog eller säkerhetskopieringskatalog) använder SMB-filresurs, kräver installationskontot följande ytterligare behörigheter på SMB-filservern enligt beskrivningen i Installera SQL Server med SMB-filresurslagring.

SMB-nätverksresursmapp FULLSTÄNDIG KONTROLL SQL-konfigurationskonto
SMB-nätverksresursmapp FULLSTÄNDIG KONTROLL SQL Server- och SQL Server Agent Service-konto
SMB-filserver SeSecurityPrivilege SQL-konfigurationskonto

Åtgärd

Följ dessa steg för att lägga till rättigheterna till installationskontot:

  1. Logga in som administratör.
  2. Välj Starta>körning, skriv Kontrollera administratörstools och välj sedan OK.
  3. Dubbelklicka på Lokal säkerhetsprincip.
  4. I dialogrutan Lokala säkerhetsinställningar väljer du Lokala principer, öppnar Tilldelning av användarrättigheter och dubbelklickar sedan på Säkerhetskopieringsfiler och kataloger.
  5. I dialogrutan Egenskaper för säkerhetskopiering av filer och kataloger väljer du Lägg till användare eller grupp.
  6. I dialogrutan Välj användare eller grupper anger du det användarkonto som du vill använda för konfigurationen och väljer sedan OK två gånger.

    Kommentar

    Om du vill lägga till användarkontot för felsökningsprogram och hantera gransknings- och säkerhetsloggprinciper utför du steg 1 till och med 6 .

  7. Öppna dialogrutan Lokala säkerhetsinställningarArkiv-menyn och välj sedan Avsluta för att stänga.

Vanliga frågor (FAQ)

Varför krävs SeSecurityPrivilege det på filservern för säkerhetskopieringskatalogen på UNC-resursen?

Den här behörigheten krävs för att hämta åtkomstkontrollistor (ACL: er) i standardkatalogen för säkerhetskopiering för att se till att SQL Server-tjänstkontot har fullständiga behörigheter för mappen. Tjänstkontot anger även ACL:er om behörigheter saknas för SQL-tjänstkontot så att en säkerhetskopia av katalogen kan köras. Installationsprogrammet kör dessa kontroller för standardkatalogen för säkerhetskopiering så att om en säkerhetskopia utförs efter installationen får du inget fel (på grund av saknade behörigheter).

Kommentar

SeSecurityPrivilege krävs för att ändra get/set ACLs från katalogerna och undermapparna. Detta gäller även om användare som har fullständig kontrollbehörighet för katalogerna inte har behörighet till get/set OWNER och granskar information från katalogen.

Varför uppstår felet som beskrivs i scenario 3 endast i Microsoft SQL Server 2012 och senare versioner?

Från och med SQL Server 2012 tillhandahåller Microsoft stöd för data och loggfiler på SMB-filresursen. Som en del av den här förbättringen förbättras konfigurationsupplevelsen ytterligare för att skärpa säkerhetskontrollerna så att kunderna inte stöter på fel eller problem på grund av otillräckliga behörigheter efter installationen. I versioner före SQL Server 2012 kan användarna fortfarande konfigurera nätverksresurssökvägen för säkerhetskopieringskatalogen om SQL Service-kontot inte har behörighet att köra en säkerhetskopia. Dessa användare får dock ett fel efter installationen i den här situationen. Dessa scenarier förhindras nu när du startar konfigurationskontrollen för SQL 2012 på en nätverksresurs.

Mer information

  • Om du vill kontrollera listan över behörigheter som för närvarande är associerade med installationskontot använder du verktyget AccessChk.exe . Information om hur du laddar ned det här verktyget finns i AccessChk v6.13.

    Användning: accesschk.exe- a \<setup account> *

    Till exempel: 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
    
  • Mer information finns i Konfigurera Windows-tjänstkonton och -behörigheter.