Dlaczego moje lustro bazy danych ulega awarii po zmianie ustawień grupy plików z RESTRICTED_USER na MULTI_USER?

9

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-ONLYflagę mojej historycznej grupy plików.

3. Ustawiam DB, aby MULTI_USERumoż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!

Bogdan Bogdanov
źródło
Error: 823, Severity: 24wydaje 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.
Kin Shah,
Nie jestem pewien @Kin. Mamy zupełnie nową, podłączoną optycznie, specjalistyczną pamięć IBM. Działa od około 3 miesięcy. I to był jedyny raz, kiedy otrzymaliśmy taki błąd. W rzeczywistości istnieje około 10 wierszy z tym błędem, ale wszystkie one miały miejsce w tym okresie. Niszczymy lustro i tworzymy je ponownie. Mamy problem z usunięciem lustra. Więc usuwamy to ręcznie.
Bogdan Bogdanov
Błąd 823 with sev 24to 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ł strony
Kin Shah
Wykonujemy kopie zapasowe obu typów, @Kin. Mamy również VmWare replicationdo remote 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 musimy stop SQL serviceprzenieść 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 tym VmWare).
Bogdan Bogdanov
We do both type of backupsto może być problem. Migawek maszyn wirtualnych nie należy używać jako alternatywy dla rodzimych kopii zapasowych serwera SQL.
Kin Shah

Odpowiedzi:

0

Znaleźliśmy problem. Jest to błąd w SQL Server. Po ustawieniu READ_WRITEpolecenie nie jest poprawnie przekazywane do mirrorbazy danych. Po uruchomieniu zmiany skryptu partitionsna serwerze kopii lustrzanych wystąpił błąd. Następnie synchronizacja jest zniszczona, a baza danych w lustrze jest zablokowana (w suspendedstanie).

Rozwiązujemy ten problem, aktualizując program SQL Server do najnowszej wersji (naszą początkową wersją był system operacyjny SP).

Bogdan Bogdanov
źródło