Rozwiązywanie problemów z bazą danych
Artykuł ten opisuje typowe problemy związane z bazą danych w dab Nexus oraz proponowane rozwiązania.
Niespójności statusu zadań
Objawy
- Zadania pozostają w stanie Running mimo ukończenia lub niepowodzenia
- Status zadania nie odzwierciedla faktycznego postępu ekstrakcji
- Wykonania zadań wykazują niepoprawne stany zakończenia
- Zadania zaplanowane czasami kończą się niepowodzeniem bez widocznych błędów
Przyczyna
Takie zachowania pojawiają się zazwyczaj, gdy Application Database oraz Extraction/Results databases korzystają z tej samej instancji SQL Server. Podczas dużych ekstrakcji baza SQL Server jest poddawana dużemu obciążeniu, co może skutkować:
- Przekroczeniem czasu połączenia z Application Database
- Nieudanymi operacjami zapisu aktualizującymi stan zadań
- Niespójnymi informacjami o statusie zapisanymi w Application Database
Application Database przechowuje wszystkie stany zadań i powinna być zawsze dostępna. Jeśli konkuruje o zasoby z zadaniami wymagającymi intensywnych ekstrakcji, może dojść do problemów ze stabilnością połączenia.
Diagnoza
Zaleca się sprawdzenie logów SQL Server pod kątem:
- Błędów przekroczenia czasu połączenia
- Ostrzeżeń o zakleszczeniach (deadlock)
- Komunikatów związanych z rywalizacją o zasoby
Warto potwierdzić obecne ustawienia:
- Czy Application Database i Extraction databases znajdują się na tej samej instancji SQL Server?
- Czy problem pojawia się podczas lub po dużych ekstrakcjach?
Rozwiązanie
Application Database należy przenieść na dedykowaną instancję SQL Server. Szczegóły migracji opisano poniżej.
Migracja Application Database do osobnej instancji
W przypadku niespójności statusów zadań lub problemów z połączeniami wynikających ze współdzielenia instancji SQL Server, należy wykonać poniższe kroki i przenieść Application Database na wydzieloną instancję.
Wymagania wstępne
- Utworzona nowa instancja SQL Server (zob. System Requirements)
- Uprawnienia administracyjne do obu instancji SQL Server
- Dane uwierzytelniające konta serwisowego dab Nexus
- Zaplanowany odpowiedni czas niedostępności na potrzeby migracji
Kroki migracji
1. Utwórz kopie zapasowe
- Wykonać pełną kopię zapasową Application Database
- Wykonać również kopie zapasowe wszystkich Data Databases (Extraction/Results)
- Wszelkie dane konfiguracyjne (usługi zewnętrzne, połączenia SAP, ustawienia użytkowników) są przechowywane w Application Database
Nie należy pomijać tworzenia kopii zapasowej. Application Database zawiera całą konfigurację dab Nexus.
2. Zatrzymaj usługę dab Nexus
- Otworzyć Windows Services (
services.msc) - Zatrzymać usługę dab Nexus
- Przed kontynuacją upewnić się, że usługa została całkowicie wyłączona
3. Przywróć Application Database na nowej instancji
- Odtworzyć kopię zapasową Application Database na nowej, wydzielonej instancji SQL Server
- Upewnić się, że nazwa bazy pozostaje bez zmian lub zapisać nową nazwę do aktualizacji konfiguracji
- Zweryfikować, czy przywracanie przebiegło pomyślnie
4. Dostosuj Configuration.json
- Przejść do katalogu instalacyjnego dab Nexus
- Edytować plik
Configuration.json - Zaktualizować parametry połączenia w
ApplicationDatabase:- Nazwa serwera: podać nazwę nowej instancji
- Nazwa bazy: podać nową, jeśli zmieniono podczas przywracania
- Przykłady połączeń znajdują się w Configuration.json Reference
Przykładowa aktualizacja ciągu połączenia:
"ConnectionStrings": {
"ApplicationDatabase": "Server=NEW-SQL-INSTANCE;Database=NexusHome;Trusted_Connection=True;MultipleActiveResultSets=true"
}
5. Uruchom ponownie usługę dab Nexus
- Uruchomić ponownie usługę dab Nexus
- W Event Viewer systemu Windows sprawdzić, czy nie pojawiają się błędy podczas startu
- Upewnić się, że dostęp do interfejsu webowego dab Nexus działa prawidłowo
6. Utwórz nowe połączenia SQL w dab Nexus
- Zalogować się do dab Nexus
- Przejść do Settings > SQL Servers
- Utworzyć nowe połączenia SQL wskazujące na instancje Extraction/Results
- Sprawdzić każde połączenie przed kontynuacją
7. Zaktualizuj zaplanowane zadania
Należy przejrzeć wszystkie zadania wykorzystujące połączenia SQL:
- Dezaktywować zadania korzystające ze starego połączenia SQL (w przeciwnym razie zakończą się błędem)
- Sklonować każde takie zadanie
- W sklonowanym zadaniu zaktualizować połączenie SQL, aby korzystało z nowego połączenia
- Aktywować nowe zadanie
- Zweryfikować poprawność wykonania nowego zadania
- Usunąć stare zadanie po potwierdzeniu poprawności działania nowego
Nie należy usuwać starych zadań przed potwierdzeniem poprawnej pracy sklonowanych zadań.
Weryfikacja po migracji
- Wykonać testową ekstrakcję, aby sprawdzić komunikację z Extraction database
- Monitor statusy zadań, aby potwierdzić ich prawidłową aktualizację
- Sprawdzić logi SQL Server na obu instancjach pod kątem problemów z połączeniem
- Zweryfikować, czy zaplanowane zadania wykonują się zgodnie z oczekiwaniami
Błędy przekroczenia czasu połączenia
Objawy
- Komunikaty o "connection timeout" w logach dab Nexus
- Zadania kończą się błędami połączenia z bazą danych
- Sporadyczne problemy z dostępnością
Możliwe przyczyny
- Problemy sieciowe między dab Nexus a SQL Server
- Przeciążona SQL Server (problem współdzielonej instancji)
- Firewall blokuje połączenia
- SQL Server nie skonfigurowano do zdalnych połączeń
Rozwiązania
- Zweryfikować łączność sieciową za pomocą
Test-NetConnectionlubtelnetdo portu SQL Server (domyślnie: 1433) - W SQL Server Configuration Manager sprawdzić, czy wszystkie wymagane protokoły są włączone
- Przejrzeć reguły zapory dla portu SQL Server
- Rozważyć migrację na oddzielne instancje, jeśli przyczyną jest przeciążenie
Błędy uprawnień
Objawy
- Komunikaty "access denied" lub "permission denied"
- Brak możliwości tworzenia baz lub tabel
- Błędy podczas operacji odczytu/zapisu
Rozwiązanie
Należy upewnić się, że konto serwisowe dab Nexus posiada wymagane uprawnienia:
- Application Database: rola
db_owner(lubdb_datareader,db_datawriter,db_ddladmin) - Extraction/Results databases: rola
dbcreatorna poziomie instancji (dla automatycznego tworzenia) lubdb_ownerw przypadku predefiniowanych baz
Szczegółowe wymagania opisano w Setup MS SQL-Server.