Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wiederherstellen der SQL Server-Master-Datenbank

EINFÜHRUNG

Die Master-Datenbank enthält Datensätze der Struktur/Konfiguration sowohl für die aktuelle Instanz als auch für alle anderen Datenbanken. Wenn Sie sp_configure ausführen schreiben Sie Daten in die Master-Datenbank. Es enthält auch die meisten dynamischen Verwaltungsansichten, die zum Überwachen der Instanz erforderlich sind.

Die Bedeutung der Master-Datenbank ist entscheidend. Erstens enthält es die Informationen, die zum Öffnen aller anderen Datenbanken erforderlich sind, und muss zuerst geöffnet werden. Dann werden alle Prinzipale auf Instanzebene für die aktuelle Instanz einbezogen.

Es ist wichtig, die Master-Datenbank täglich zu sichern. Ebenso wichtig ist es zu wissen, wie die Master-Datenbank auf der Instanz wiederhergestellt wird. Die häufigsten Fälle sind der Datenbankabsturz oder die Notwendigkeit, die Master-Datenbank auf einer anderen Instanz wiederherzustellen, wenn die Quellinstanz nicht mehr verwendet wird. In diesem Artikel untersuchen wir den speziellen Fall des Verschiebens der Master-Datenbank in eine andere Instanz.

PRÜFEN SIE DEN STATUS DER ANWENDUNGSDIENSTE

Das Wiederherstellen der Master-Datenbank auf einer anderen Instanz erfordert das Starten der Instanz im Einzelbenutzermodus. Daher ist es wichtig sicherzustellen, dass die aktive Sitzung die einzige ist, die die Instanz steuert.

Verhindern Sie dazu, dass alle Anwendungsdienste auf die Instanz zugreifen, insbesondere wenn solche Anwendungen privilegierten Zugriff haben. Es können Probleme auftreten, wenn Sie die Instanz im Einzelbenutzermodus starten, während die Anwendung bereits eine Sitzung aufgebaut hat. In diesem Fall können Sie nicht mit einer interaktiven Sitzung von SQL Server Management Studio fortfahren.

SQL SERVER-DIENSTE BEENDEN

Beenden Sie alle SQL Server-Dienste mit dem SQL Server-Konfigurationsmanager:Klicken Sie mit der rechten Maustaste auf jeden Dienst und wählen Sie Beenden aus dem Kontextmenü (siehe Abb. 2).

SQL SERVER IM EINZELBENUTZERMODUS STARTEN

Um die Master-Datenbank wiederherzustellen, benötigen Sie die SQL Server-Instanz im Einzelbenutzermodus. Führen Sie die folgenden Schritte aus:

  1. CMD-Eingabeaufforderung öffnen
  2. Navigieren Sie zu C:\Programme\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
  3. Geben Sie sqlservr –m OR NET start MSSQLServer /c /m /T3604
  4. aus

ODER

Beachten Sie, dass sich Schritt 2 auf Binn bezieht Verzeichnis Speicherort. Dies kann in Ihrer Installation anders sein.

Sie finden das erforderliche Verzeichnis, indem Sie die Registerkarte Dienst der SQL Server-Diensteigenschaften im SQL Server-Konfigurations-Manager überprüfen (siehe Abbildung 4):

MASTER WIEDERHERSTELLEN

Wenn Sie den Master von einer Instanz auf eine andere wiederherstellen, erhalten Sie neue Prinzipale und neue Werte in Systemkatalogen, die solche Werte wie den Instanznamen und sogar den tempdb-Speicherort enthalten.

Stellen Sie vor der Wiederherstellung des Masters sicher, dass die Pfade des Zielservers für TempDB-Dateien verfügbar sind, wie auf dem Quellserver definiert. Andernfalls wird die neue Instanz nach Abschluss der Wiederherstellung nicht erfolgreich gestartet.

  1. Öffnen Sie SQL Server Management Studio
  2. Führen Sie den Code in Listing 1 in SQL Server Management Studio aus
-- Listing 1: Restore Master Database
restore database master from disk ='<full_path_of_backup>' with replace;

Hinweis: Die Instanz wird heruntergefahren, sobald die Wiederherstellung abgeschlossen ist.

ÄNDERUNG DES SERVICEKONTOS

Gehen Sie wie folgt vor, um SQL Server nach Abschluss der Wiederherstellung zu starten:

  1. Ändern Sie das SQL Server-Dienstkonto in das aktuell angemeldete Konto.
  2. Öffnen Sie Start> Alle Programme> Microsoft SQL Server 2005> Konfigurationstools> SQL Server-Konfigurationsmanager
  3. Klicken Sie mit der rechten Maustaste auf jeden Dienst und wählen Sie Eigenschaften aus
  4. Im Anmelden geben Sie den gewünschten Kontonamen und das zugehörige Passwort ein.

SERVERNAME

Die Master-Datenbank enthält den Namen der Instanz, in der sie sich befindet. Da die in diesem Szenario wiederhergestellte Sicherung von einer anderen Instanz stammt, müssen Sie den Servernamen mithilfe gespeicherter Prozeduren aktualisieren, wie in Listing 2 gezeigt.

-- Listing 2: Change the Instance Name for a SQL Server Instance
-- Check the current server name

select @@SERVERNAME

-- Change the server name as seen by the database

sp_dropserver 'EUK-POSTSVR-01'--Present Server name goes here
go 
sp_addserver 'EUK-POSTBKP-01','local'--New Server name goes here 
go

Starten Sie SQL Server über den SQL Server-Konfigurations-Manager neu, damit die Namensänderung wirksam wird.

SERVICE-LOGINS

Die Master-Datenbank zeichnet auch alle Anmeldungen auf, die der Quellinstanz zugeordnet sind. In der neuen Instanz müssen Sie unnötige Anmeldungen bereinigen. Danach können Sie die lokalen Standard-SQL-Server-Gruppen zur aktuellen Instanz hinzufügen.

-- Listing 3: Remove Unnecessary Logins
drop login [EUK-POSTSVR-01\SQLServer2005MSSQLUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005MSFTEUser$EUK-POSTSVR-01$MSSQLSERVER]
drop login [EUK-POSTSVR-01\SQLServer2005SQLAgentUser$EUK-POSTSVR-01$MSSQLSERVER]

-- Listing 4: Add local default SQL Server Groups
create login [EUK-POSTBKP-01\SQLServer2005MSSQLUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005SQLAgentUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;
create login [EUK-POSTBKP-01\SQLServer2005MSFTEUser$EUK-POSTBKP-02$MSSQLSERVER] from windows;

Hinweis: Stellen Sie sicher, dass die Server- und Agent-Dienstkonten zu ihren jeweiligen Gruppen auf Betriebssystemebene gehören und dass diese Betriebssystemgruppen über die erforderlichen Berechtigungen verfügen. Tabelle 1 zeigt Berechtigungen für SQL Server-Dienstkonten.

S/Nr Privileg Erforderlich von
1. Melden Sie sich als Dienst an SQL Server-Dienstkonto SQL Agent-Dienstkonto Integrationsdienstkonto
2. Als Teil des Betriebssystems fungieren SQL Server-Dienstkonto SQL Agent-Dienstkonto
3 Melden Sie sich als Batch-Job an SQL Server-Dienstkonto SQL Agent-Dienstkonto
4. Ein Token auf Prozessebene ersetzen SQL Server-Dienstkonto SQL Agent-Dienstkonto
5. Querprüfung umgehen SQL Server-Dienstkonto SQL Agent-Dienstkonto Integrationsdienstkonto
6. Speicherkontingente für einen Prozess anpassen SQL Server-Dienstkonto SQL Agent-Dienstkonto
7. Erstellen Sie globale Objekte Integrationsdienstkonto
8. Seiten im Speicher sperren (AWE) SQL Server-Dienstkonto

Sobald die Verwaltung auf Datenbankebene abgeschlossen ist, kehren Sie zum regulären Dienstkonto zurück. Starten Sie die Instanz noch einmal über den SQL Server Configuration Manager neu.

An dieser Stelle können Sie die Anwendungsdienste starten.

SCHLUSSFOLGERUNGEN

Während der Ausführung des obigen Szenarios können Fehler auftreten. Unten sehen Sie die Informationen zu diesen Fehlern.

Wenn Sie die Probleme beheben, können Sie Tools wie ProcMon von SysInternal verwenden. Sie isolieren die Dateiberechtigungsprobleme beim Starten von SQL Server (siehe Abbildung 7).

S/N Fehler Ursache/Lösung
1. SQLServerAgent konnte nicht gestartet werden (Grund:Verbindung zum Server „(lokal)“ nicht möglich; SQLServerAgent kann nicht gestartet werden). Erstellen Sie Logins für alle lokalen Dienstkonten
2. Lokaler Serververbindungsanbieter konnte [ \\.\pipe\SQLLocal\MSSQLSERVER ] nicht überwachen. Fehler:0x5 TDSSNIClient-Initialisierung fehlgeschlagen mit Fehler 0x5, Statuscode 0x40. TDSSNIClient-Initialisierung fehlgeschlagen mit Fehler 0x5, Statuscode 0x1. SQL Server konnte den FRunCM-Thread nicht erstellen. Überprüfen Sie das SQL Server-Fehlerprotokoll und die Windows-Ereignisprotokolle auf Informationen zu möglichen verwandten Problemen. Die Netzwerkbibliothek konnte aufgrund eines internen Fehlers in der Netzwerkbibliothek nicht gestartet werden. Um die Ursache zu ermitteln, überprüfen Sie die Fehler unmittelbar vor diesem im Fehlerprotokoll. SQL Server wurde zuvor mit einem anderen Dienstkonto gestartet und zwangsweise beendet. Es tritt während der Wiederherstellung der Master-Datenbank auf. Um dies zu korrigieren, starten Sie die Instanz mit dem in Schritt 3 verwendeten Dienstkonto und beenden Sie den Dienst dann ordnungsgemäß. Danach können Sie mit dem regulären Dienstkonto beginnen.
3. SQLServerAgent konnte nicht gestartet werden (Grund:Fehler beim Erstellen einer neuen Sitzung). Erteilen Sie dem SQL Agent-Konto die entsprechenden Berechtigungen

REFERENZEN

Master-Datenbank