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:
- Logga in som administratör.
- Välj Starta>körning, skriv Kontrollera administratörstools och välj sedan OK.
- Dubbelklicka på Lokal säkerhetsprincip.
- 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.
- I dialogrutan Egenskaper för säkerhetskopiering av filer och kataloger väljer du Lägg till användare eller grupp.
- 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 .
- Öppna dialogrutan Lokala säkerhetsinställningar på Arkiv-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.