Freigeben über


Sql Server-Installation schlägt fehl, nachdem standardbenutzerrechte entfernt wurden

Dieser Artikel hilft Ihnen, ein Problem zu beheben, das auftritt, wenn Sie Microsoft SQL Server installieren oder aktualisieren, nachdem Sie die Sicherheit verschärft haben.

Gilt für: SQL Server

Problembeschreibung

Berücksichtigen Sie das Szenario, in dem Sie Microsoft SQL Server in Windows ausführen. Um die Sicherheit zu erhöhen, entfernen Sie einige Standardbenutzerrechte aus der lokalen Administratorgruppe. Um SQL Server auf dem System einzurichten, fügen Sie das Setupkonto der lokalen Administratorgruppe hinzu.

Wenn Sie in diesem Szenario versuchen, SQL Server zu installieren oder zu aktualisieren, schlägt der Installationsprozess fehl, und Möglicherweise wird eine Fehlermeldung angezeigt, die einer der folgenden Nachrichten ähnelt:

  • Szenario 1: Wenn eine neue Installation fehlschlägt, wird die folgende Fehlermeldung angezeigt:

    Access is denied
    

    Möglicherweise erhalten Sie auch Fehlermeldungen, die in der datei Detail.txt wie folgt aussehen:

    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.  
    
  • Szenario 2: Wenn eine neue Installation von Microsoft SQL Server 2012 oder Microsoft SQL Server 2008 R2 fehlschlägt, erhalten Sie eine der folgenden Fehlermeldungen:

    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.
    
  • Szenario 3: Wenn die Installation von SQL Server 2012 oder einer höheren Version fehlschlägt, wenn Sie eine Netzwerkfreigabe (UNC-Pfad) für den Speicherort des Sicherungsverzeichnisses angeben, wird die folgende Fehlermeldung angezeigt:

    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.
    

    Notiz

    Dieses Problem tritt auf, da das SQL Server-Setupkonto nicht über die SeSecurityPrivilege Berechtigungen auf dem Dateiserver verfügt, auf dem die Netzwerkfreigabe gehostet wird.

Ursache

Wenn Sie das Setup als lokaler Administrator ausführen, benötigen Sie die folgenden Benutzerrechte, damit setup erfolgreich ausgeführt werden kann:

Anzeigename des lokalen Gruppenrichtlinienobjekts Benutzerrecht
Sichern von Dateien und Verzeichnissen SeBackupPrivilege
Debuggen von Programmen SeDebugPrivilege
Verwalten von Überwachungs- und Sicherheitsprotokollen SeSecurityPrivilege

Notiz

Weitere Informationen zu den Berechtigungen, die zum Installieren von SQL Server erforderlich sind, finden Sie im Abschnitt "Voraussetzungen" in den folgenden Artikeln:

Wenn eine Speicheroption für Datenverzeichnis oder andere Verzeichnisse (Benutzerdatenbankverzeichnis, Benutzerdatenbankprotokollverzeichnis, TempDB-Verzeichnis, TempDB-Protokollverzeichnis oder Sicherungsverzeichnis) SMB-Dateifreigabe verwendet, benötigt das Setupkonto die folgenden zusätzlichen Berechtigungen auf dem SMB-Dateiserver, wie unter Installieren von SQL Server mit SMB-Dateifreigabespeicher beschrieben.

SMB-Netzwerkfreigabeordner VOLLZUGRIFF SQL-Setupkonto
SMB-Netzwerkfreigabeordner VOLLZUGRIFF SQL Server- und SQL Server-Agent-Dienstkonto
SMB-Dateiserver SeSecurityPrivilege SQL-Setupkonto

Lösung

Führen Sie die folgenden Schritte aus, um dem Setupkonto die Rechte hinzuzufügen:

  1. Melden Sie sich als Administrator an.
  2. Wählen Sie "Start ausführen"> aus, geben Sie "Admintools steuern" ein, und wählen Sie dann "OK" aus.
  3. Doppelklicken Sie auf die lokale Sicherheitsrichtlinie.
  4. Wählen Sie im Dialogfeld "Lokale Sicherheitseinstellungen" die Option "Lokale Richtlinien" aus, öffnen Sie die Zuweisung von Benutzerrechten, und doppelklicken Sie dann auf "Sicherungsdateien und Verzeichnisse".
  5. Wählen Sie im Dialogfeld " Eigenschaften von Sicherungsdateien und Verzeichnissen" die Option "Benutzer oder Gruppe hinzufügen" aus.
  6. Geben Sie im Dialogfeld "Benutzer oder Gruppen auswählen" das Benutzerkonto ein, das Sie für die Einrichtung verwenden möchten, und wählen Sie dann zweimal "OK" aus.

    Notiz

    Führen Sie die Schritte 1 bis 6 aus, um das Benutzerkonto für die Debugprogramme hinzuzufügen und Überwachungs- und Sicherheitsprotokollrichtlinien zu verwalten.

  7. Öffnen Sie im Menü "Datei" das Dialogfeld "Lokale Sicherheitseinstellungen", und wählen Sie dann "Beenden" aus, um den Vorgang zu schließen.

Häufig gestellte Fragen (FAQs)

Warum ist SeSecurityPrivilege auf dem Dateiserver für das Sicherungsverzeichnis auf der UNC-Freigabe erforderlich?

Diese Berechtigung ist erforderlich, um Zugriffssteuerungslisten (ACCESS Control Lists, ACLs) im Standardsicherungsverzeichnis abzurufen, um sicherzustellen, dass das SQL Server-Dienstkonto über vollständige Berechtigungen für den Ordner verfügt. Das Dienstkonto legt auch die ACLs fest, wenn Berechtigungen für das SQL-Dienstkonto fehlen, damit eine Sicherung des Verzeichnisses ausgeführt werden kann. Das Setupprogramm führt diese Überprüfungen für das Standardsicherungsverzeichnis aus, sodass bei einer nach der Installation durchgeführten Sicherung kein Fehler auftritt (aufgrund fehlender Berechtigungen).

Notiz

SeSecurityPrivilege ist erforderlich, um die get/set ACLs Verzeichnisse und Unterordner zu ändern. Dies gilt auch, wenn Benutzer, die über VOLLZUGRIFFsberechtigungen für die Verzeichnisse verfügen, keine Berechtigungen für get/set OWNER und Überwachungsinformationen aus dem Verzeichnis besitzen.

Warum tritt der in Szenario 3 beschriebene Fehler nur in Microsoft SQL Server 2012 und höheren Versionen auf?

Ab SQL Server 2012 bietet Microsoft Unterstützung für Daten und Protokolldateien in der SMB-Dateifreigabe. Im Rahmen dieser Verbesserung wird die Einrichtungsoberfläche weiter verbessert, um die Sicherheitsüberprüfungen zu straffen, sodass Kunden aufgrund unzureichender Berechtigungen nach der Installation keine Fehler oder Probleme feststellen. In Pre-SQL Server 2012-Versionen können Benutzer den Netzwerkfreigabepfad für das Sicherungsverzeichnis weiterhin einrichten, wenn das SQL Service-Konto nicht über die Berechtigung zum Ausführen einer Sicherung verfügt. Diese Benutzer treten jedoch in dieser Situation einen Fehler nach der Installation auf. Diese Szenarien werden jetzt verhindert, wenn Sie die SQL 2012-Setupüberprüfung für eine Netzwerkfreigabe starten.

Weitere Informationen

  • Verwenden Sie das tool AccessChk.exe , um die Liste der Berechtigungen zu überprüfen, die derzeit dem Setupkonto zugeordnet sind. Informationen zum Herunterladen dieses Tools finden Sie unter AccessChk v6.13.

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

    Beispiel: 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
    
  • Weitere Informationen finden Sie unter Konfigurieren von Windows-Dienstkonten und -Berechtigungenbetreffen.