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:
- Melden Sie sich als Administrator an.
- Wählen Sie "Start ausführen"> aus, geben Sie "Admintools steuern" ein, und wählen Sie dann "OK" aus.
- Doppelklicken Sie auf die lokale Sicherheitsrichtlinie.
- 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".
- Wählen Sie im Dialogfeld " Eigenschaften von Sicherungsdateien und Verzeichnissen" die Option "Benutzer oder Gruppe hinzufügen" aus.
- 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.
- Ö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.