Meine Umgebung ist die folgende: VMWare 5.5 Vitalized Server MS Windows Server 2008R2 Enterprise- Domäne und SQL Server 2008 R2 Enterprise . Zentraler Speicher mit Fibre-Channel-Verbindung.
Ich habe Partitionen in meinem SQL Server DB
. Ich habe 2 file groups
: eine mit Live-Daten (FG1) , die zweite mit historischen Daten (HDG) .
Die zweite Dateigruppe ist read-only
. Jeden Monat mache ich Bewegungen in Partitionen - ich füge neue Daten (vom Vormonat) zu historischen Daten hinzu. Dieser Vorgang erfolgt automatisch .
Wir haben unsere Datenbank auf einen neuen Server verschoben. Anfangs musste ich den Vorgang manuell durchführen . Während dieser Operation fällt mein Spiegel (nach Operation 3 - siehe Prozessablauf unten) mit folgendem Fehler aus:
AUF PRINCIPAL SERVER:
REIHE 0 im LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid84
Message
Setting database option MULTI_USER to ON for database MYDB.
REIHE 1 im LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid18s
Message
Error: 1453, Severity: 16, State: 1.
REIHE 2 im LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid18s
Message
'TCP://10.201.27.154:5022', the remote mirroring partner for database 'MYDB', encountered error 823, status 3, severity 24. Database mirroring has been suspended. Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance.
BEMERKUNG: Ich habe diesen Vorgang viele Male automatisch auf dem alten Server ausgeführt und es tritt nie ein solcher Fehler auf.
AUF SPIEGELSERVER:
REIHE 1 im LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Archive #3 - 15.6.2015 21:33:00)
Source spid17s
Message
Error: 823, Severity: 24, State: 3.
REIHE 2 im LOG:
Date 15.6.2015 20:54:11
Log SQL Server (Archive #3 - 15.6.2015 21:33:00)
Source spid17s
Message
The operating system returned error 5(Access is denied.) to SQL Server during a write at offset 0000000000000000 in file 'e:\Databases\MYDB_HISTRICAL.ndf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Mein Prozess folgt:
1. Ich mache mehrere Sicherungen der Datenbank (vollständige, Dateigruppen- und TLog-Sicherungen).
2. Ich setze DB auf RESTRICTED_USER
(um das Entfernen des schreibgeschützten Flag für historische Dateigruppen per Skript zu ermöglichen).
2a. Ich entferne das READ-ONLY
Flag meiner historischen Dateigruppe.
3. Ich habe DB so eingestellt MULTI_USER
, dass der normale Betrieb unserer Software möglich ist.
4. Ich aktualisiere Partitionen, damit die Daten in die historische Dateigruppe verschoben werden.
5. Ich wiederhole die Schritte 2 , 2a und 3, damit ich die historische Dateigruppe NUR LESEN erneut einstellen kann.
6. Ich mache wieder Backups.
Hat jemand eine Idee, warum ich diesen Fehler erhalte?
EDIT: Wir erhalten das gleiche Problem während der verschiedenen Phase des Verfahrens. Dies ist die einzige Situation, in der der Spiegel zusammenbricht. Ich nehme an, das Problem liegt in der Prozedur, aber ich kann nicht herausfinden, warum!
quelle
Error: 823, Severity: 24
scheint Hardware-Problem. Überprüfen Sie Ihre Festplatten, um festzustellen, ob sie defekt sind. Führen Sie checkdb für die Datenbanken aus, um sicherzustellen, dass sie sauber sind.823 with sev 24
ist ein Hardwareproblem. Führen Sie Sicherungen auf Dateiebene anstelle von nativen SQL Server-Sicherungen durch oder wird auf dem Server eine Antivirensoftware ausgeführt? Sie sollten SQL Agent-Warnungen einfügen, um Sie zu benachrichtigen, wenn ein 823-Fehler auftritt. Dieses Skript hilft Ihnen dabei . Außerdem ist 823 ein böser Fehler - es heißt, dass eine E / A-Operation auf Betriebssystemebene fehlgeschlagen ist und das E / A-Subsystem eine Beschädigung verursacht - SQL Server hat keine Seitenprüfung durchgeführtVmWare replication
aremote host
. Das, was mir aufgefallen ist, bis ich Ihnen eine Antwort geschrieben habe, ist, dass wir den Spiegel nicht auf normale Weise zerstören können. Die Datei wurde gesperrt und wir müssenstop SQL service
und müssen die Datenbankdateien in ein anderes Verzeichnis verschieben. Von diesem Moment an ist alles in Ordnung (ich überprüfe Protokolle mitsys.xp_readerrorlog
). Ein anderer Gedanke ist, ob eine VmWare-Replikation in diesem Moment stattfindet, aber ich bin nicht sicher, wie sich dies auf den Prozess auswirkt (ich weiß wenig darüberVmWare
).We do both type of backups
das könnte ein Problem sein. VM-Snapshots sollten nicht als Alternative zu nativen SQL Server-Sicherungen verwendet werden.Antworten:
Wir haben das Problem gefunden. Es ist ein Fehler in SQL Server. Wenn wir
READ_WRITE
den Befehl setzen, wird er nicht richtig in die Datenbank übertragenmirror
. Beim Ändernpartitions
des Skriptstarts auf dem Spiegelserver ist ein Fehler aufgetreten. Danach wird die Synchronisation ruiniert und die Datenbank auf dem Spiegel wird gesperrt (imsuspended
Zustand).Wir beheben das Problem, indem wir SQL Server auf die neueste Version aktualisieren (unsere ursprüngliche Version war ohne SP).
quelle