Moje środowisko to: VMWare 5.5 serwer witalizowany MS Windows Server 2008R2 Enterprise domena i SQL Server 2008 R2 Enterprise . Scentralizowana pamięć masowa z połączeniem Fibre Channel.
Mam w sobie przegrody SQL Server DB
. Mam 2 file groups
: jeden z danymi na żywo (FG1) , drugi z danymi historycznymi (HDG) .
Druga grupa plików to read-only
. Każdego miesiąca wykonuję ruchy w partycjach - do danych historycznych dodaję nowe dane (z poprzedniego miesiąca). Ten proces jest automatyczny .
Przenieśliśmy naszą bazę danych na nowy serwer. Początkowo musiałem wykonać ten proces ręcznie . Podczas tej operacji moje lustro psuje się (po operacji 3 - patrz poniżej przepływ procesu) z następującym błędem:
NA GŁÓWNYM SERWERZE:
RZĘD 0 w logu:
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.
WIERSZ 1 W DZIENNIKU:
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.
RZĘD 2 w DZIENNIKU:
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.
UWAGA: Wykonałem tę operację na starym serwerze wiele razy automatycznie i nigdy nie mam takiego błędu.
NA SERWERZE LUSTERKA:
WIERSZ 1 W DZIENNIKU:
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.
RZĘD 2 w DZIENNIKU:
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.
MÓJ PROCES OBEJMUJE:
1. Wykonuję kilka kopii zapasowych bazy danych (pełne, grupy plików i kopie TLog).
2. Ustawiam DB na RESTRICTED_USER
(aby umożliwić usuwanie flagi „tylko do odczytu” historycznej grupy plików według skryptu).
2a. Usuwam READ-ONLY
flagę mojej historycznej grupy plików.
3. Ustawiam DB, aby MULTI_USER
umożliwić normalne działanie naszego oprogramowania.
4. Aktualizuję partycje, aby dane zostały przeniesione do historycznej grupy plików.
5. Powtarzam kroki 2 , 2a i 3, aby ponownie ustawić grupę plików historycznych TYLKO ODCZYTAJ.
6. Ponownie wykonuję kopie zapasowe.
Czy ktoś ma pojęcie, dlaczego pojawia się ten błąd?
EDYCJA: Ten sam problem pojawia się na różnych etapach procedury. To jedyna sytuacja, w której lustro się psuje, więc podejrzewam, że problem leży w procedurze, ale nie mogę zrozumieć, dlaczego!
źródło
Error: 823, Severity: 24
wydaje się problem ze sprzętem. Sprawdź dyski, aby sprawdzić, czy nie działa prawidłowo. Uruchom checkdb w bazach danych, aby upewnić się, że są czyste.823 with sev 24
to problem sprzętowy. Czy wykonujesz kopie zapasowe na poziomie plików zamiast natywnych kopii zapasowych serwera SQL lub czy na serwerze działa jakieś oprogramowanie antywirusowe? Powinieneś umieścić ostrzeżenia agenta sql, aby ostrzec cię, gdy wystąpi błąd 823 - ten skrypt ci pomoże . Ponadto 823 jest paskudnym błędem - mówi, że operacja we / wy nie powiodła się na poziomie systemu operacyjnego, a podsystem we / wy powoduje uszkodzenie - serwer sql nie sprawdził stronyVmWare replication
doremote host
. Rzeczą, którą zauważyłem, dopóki nie napisałem wam odpowiedzi, jest to, że nie możemy zniszczyć lustra w normalny sposób. Plik został zablokowany i musimystop SQL service
przenieść pliki db do innego katalogu. Od tego momentu wszystko jest w porządku (sprawdzam logi za pomocąsys.xp_readerrorlog
). Inna myśl dotyczy tego, czy replikacja VmWare ma miejsce właśnie w tym momencie, ale nie jestem pewien, jak wpłynie to na proces (mało wiem o tymVmWare
).We do both type of backups
to może być problem. Migawek maszyn wirtualnych nie należy używać jako alternatywy dla rodzimych kopii zapasowych serwera SQL.Odpowiedzi:
Znaleźliśmy problem. Jest to błąd w SQL Server. Po ustawieniu
READ_WRITE
polecenie nie jest poprawnie przekazywane domirror
bazy danych. Po uruchomieniu zmiany skryptupartitions
na serwerze kopii lustrzanych wystąpił błąd. Następnie synchronizacja jest zniszczona, a baza danych w lustrze jest zablokowana (wsuspended
stanie).Rozwiązujemy ten problem, aktualizując program SQL Server do najnowszej wersji (naszą początkową wersją był system operacyjny SP).
źródło