Da ich ein Datenbank-Tutorial habe, das auf SQL Server 2005 basiert, ist die darin verwendete Beispieldatenbank AdventureWorks für SQL Server 2005, und auf meinem Computer ist SQL Server 2008 installiert, und die Beispieldatenbank ist AdventureWorks für SQL Server 2008. Zuerst dachte ich, dass die Datenbankstrukturen der Beispieldatenbanken AdventureWorks für SQL Server 2005 und AdventureWorks für SQL Server 2008 ähnlich sein sollten. Während der Übung stellte ich jedoch fest, dass die Strukturen vieler Tabellen in den beiden Datenbanken immer noch sehr unterschiedlich waren . Deshalb habe ich beschlossen, die Beispieldatenbank AdventureWorks für SQL Server 2005 aus dem Microsoft Download Center herunterzuladen und sie für ein reibungsloses Üben an SQL Server 2008 anzuhängen. Ich habe mich mit dem Superadministratorkonto „sa“ von SQL Server 2008 bei der Instanz SQLSERVER2008 angemeldet:
Beim Anhängen der Beispieldatenbank AdventureWorks für SQL Server 2005 tauchte das folgende Bild auf up Fehler:
Ich habe mir die Hauptmeldung „CREATE FILE hat beim Versuch, eine physische Datei zu öffnen oder zu erstellen, ist ein Betriebssystemfehler 5 (Zugriff verweigert) aufgetreten“ genauer angesehen. . )“ können Sie auf einen Blick erkennen, dass die Betriebsberechtigungen für die anzuhängende Datendatei nicht ausreichen. Gemäß den allgemeinen Denkgewohnheiten werden wir Dateien mit unzureichenden Betriebsberechtigungen ausreichende Betriebsberechtigungen erteilen. Einige Internetnutzer sagten beispielsweise: „Gewähren Sie jedem die Berechtigung für die anzuhängenden Datendateien und die entsprechenden Protokolldateien. Der Autorisierungsprozess wird in den folgenden drei Screenshots gezeigt (beachten Sie, dass sowohl Datendateien als auch Protokolldateien autorisiert werden müssen):
(Bild 1: Autorisierte Datendatei)
(Bild 2: Nach der Autorisierung der Datendatei)
(Abbildung 3: Nach der Autorisierung der Protokolldatei)
Gewähren Sie allen [Lesen und Ausführen] und [Lesen] für die Datendatei und die Protokolldatei Nachdem ich die Berechtigungen erhalten hatte, versuchte ich erneut, die Datenbank in SQL Server 2008 anzuhängen, und stellte fest, dass der Anhang erfolgreich sein konnte! Ist das Problem so gelöst? Ist das das Richtige? „Wenn wir im eigentlichen Datenbankverwaltungsprozess die Berechtigungen von Datendateien und Protokolldateien auf „Jeder“ erweitern, ist das definitiv falsch. Da die Sicherheit der Datenbank stark beeinträchtigt wird, besteht trotz der Gewährung der Berechtigungen „Jeder“ nur die Berechtigungen „Lesen und Ausführen“ und „Lesen“ weiterhin die Gefahr von Datenlecks.
Wir sollten sicherstellen, dass die Datendateien unter normalen Zugriffsbedingungen über minimale Zugriffsrechte verfügen. Wir haben es zuvor für „Jeder“ autorisiert, sodass alle Benutzer oder Konten die entsprechenden Dateien bearbeiten können, was definitiv nicht sicher ist. Wie können Sie also minimalen Zugriff gewähren? Denken Sie darüber nach, wir verwenden SQL Server 2008, um die entsprechenden Datendateien anzuhängen, und melden einen „Zugriff verweigert“-Fehler, d. h. unzureichende Berechtigungen. Mit anderen Worten, SQL Server 2008 verfügt derzeit nicht über die Berechtigung, auf diese Dateien zuzugreifen. Wir klicken mit der rechten Maustaste auf die Datei und gehen zu den Dateieigenschaften, um die Berechtigungen der Datei zu überprüfen, wie in der folgenden Abbildung dargestellt:
(die ursprünglichen Berechtigungen der entsprechenden Daten). Datei)
Wir haben festgestellt, dass nur die beiden Gruppen oder Benutzer SYSTEM und xrm die Rechte haben, diese Datendatei zu bedienen. SYSTEM ist eine Benutzergruppe, also die Gruppe [Lokales System], und xrm ist ein Administratorbenutzer, wie in der Abbildung gezeigt:
(xrm-Benutzerinformationen)
Die SYSTEM-Benutzergruppe und der Administratorbenutzer xrm haben die Berechtigung, diese Datendatei und Protokolldatei zu betreiben. Nach der Anmeldung bei der Instanz mit der Superadministrator-SA-Verbindung von SQL Server 2008 haben SQL Server verfügt nicht über die Berechtigung, auf diese Datendateien zuzugreifen. Mit anderen Worten: Nach der Anmeldung bei der Instanz über die SQL Server 2008-Superadministrator-SA-Verbindung befindet sich die angemeldete Identität weder in der SYSTEM-Benutzergruppe noch ist sie der Administrator xrm. Was könnte das sein?
Wir werden dies herausfinden, indem wir die relevanten Informationen des aktuellen Instanzdienstes von SQL Server 2008 überprüfen. Öffnen Sie den SQL Server-Konfigurationsmanager (SQL Server Configuration Manager), um die relevanten Informationen des aktuell verbundenen Instanzdienstes zu überprüfen, wie in der Abbildung dargestellt unten:
(Zugehörige Informationen zum aktuellen Instanzdienst)
Es wurde festgestellt, dass die Anmeldeidentität der aktuellen Instanz SQLSERVER2008 ist ist „NT AUTHORITYLocalService“, dh der vom System autorisierte Vorgang [Lokaler Dienst], und der lokale Dienst ist auch eine Benutzergruppe. Mit anderen Worten: Wenn wir nur der Benutzergruppe [Lokaler Dienst] Berechtigungen erteilen (anstelle von „Jeder“), sollten wir in der Lage sein, die Datenbank mithilfe des sa-Kontos in SQL Server 2008 anzuhängen. Löschen Sie zu diesem Zweck die gerade erteilten Berechtigungen für die entsprechenden Datendateien und Protokolldateien „Jeder“, erteilen Sie dann der Benutzergruppe „LocalService“ die Berechtigungen für die entsprechenden Datendateien und Protokolldateien, versuchen Sie erneut, die entsprechende Datenbank anzuhängen, und finden Sie den Anhang kann tatsächlich erfolgreich sein! Es erübrigt sich zu erwähnen, dass die Erteilung der Betriebssystemberechtigung an die Benutzergruppe [Lokaler Dienst] definitiv viel sicherer ist als die Erteilung an „Jeder“.
Bei der oben genannten Methode haben wir den ursprünglichen Berechtigungsbereich der Datendatei geändert (der ursprüngliche Berechtigungsbereich ist nur SYSTEM, die Benutzergruppe [Lokales System] und der xrm-Systemadministrator). Eine bessere Möglichkeit besteht darin, den Berechtigungsbereich der Datendatei nicht zu ändern. Die Instanz von SQL Server 2008, die noch verbunden und als SA angemeldet ist, kann auch auf die entsprechende Datendatei zugreifen. Um dieses Ziel zu erreichen, müssen wir lediglich die Anmeldeidentität der entsprechenden Instanz in die Benutzergruppe SYSTEM [Lokales System] ändern. SYSTEM ist ebenfalls eine Benutzergruppe innerhalb der Berechtigungen der entsprechenden Datendatei, und die SQL Server-Instanz wird als ausgeführt lokales System. Wir können die Anmeldeidentität der entsprechenden SQL Server-Instanz im SQL Server-Konfigurationsmanager in [Lokales System] ändern, wie in der folgenden Abbildung dargestellt:
(Ändern Sie die Anmeldung Identität der Instanz)
(die Anmeldeidentität der Instanz wird zu LocalSystem)
Starten Sie dann den entsprechenden Instanzdienst neu und erneut - Melden Sie sich über die SA-Identitätsverbindung bei der entsprechenden Instanz von SQL Server 2008 an und versuchen Sie, die Datenbank anzuhängen. Die Datenbank kann ebenfalls erfolgreich angehängt werden. ! !
In der Tat, wenn Sie sich nicht speziell bei der entsprechenden Instanz von SQL Server 2008 als SA anmelden müssen, um die entsprechende Datenbank anzuhängen, dann beim Herstellen einer Verbindung mit der entsprechenden Instanz von SQL Server 2008, wählen Sie [Windows-Authentifizierung] zur Authentifizierung. Sie können die Datenbank anhängen, ohne weitere Änderungen vorzunehmen, wie oben erwähnt. Der Grund dafür ist: [Windows-Authentifizierung] verwendet die Berechtigungen des Benutzers des aktuellen Betriebssystems sind im Allgemeinen ausreichend. Darüber hinaus können die Vorgänge, die auf dem Instanzserver im [SQL Server-Konfigurationsmanager] ausgeführt werden können, auch unter Windows [Dienst]
Weitere relevante Artikel zur richtigen Lösung des Fehlers 5123 in der SQL Server-angehängten Datenbank finden Sie auf der chinesischen PHP-Website!