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ę.
Wybierz scenariusz migracji
Obsługiwane są dwa scenariusze. Wybór należy dostosować do zamierzonego celu:
| Scenariusz | Kiedy zastosować | Kroki |
|---|---|---|
| A – tylko Application Database | Rozwiązanie problemów ze statusami zadań poprzez przeniesienie wyłącznie Application Database. Extraction/Results databases pozostają na obecnej instancji. | Kroki 1–5 |
| B – Application + Data Databases | Przeniesienie zarówno Application Database, jak i Extraction/Results databases na nowe instancje. | Kroki 1–8 |
Scenariusz A stanowi standardowy przykład podczas rozwiązywania problemów związanych ze współdzieleniem instancji. Istniejące połączenia SQL w dab Nexus pozostają aktywne, ponieważ instancja Extraction/Results nie ulega zmianie.
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
Scenariusz A: Migracja wyłącznie Application Database
1. Utwórz kopię zapasową
- Należy wykonać pełną kopię zapasową Application Database
- W Application Database gromadzone są wszystkie dane konfiguracyjne (usługi zewnętrzne, połączenia SAP, ustawienia użytkowników)
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
Scenariusz A zostal zakonczony. Istniejace polaczenia SQL oraz zaplanowane Zadania pozostaja wskazane na niezmieniona instancje Extraction/Results. Prosze przejsc do Weryfikacji po migracji.
Scenariusz B: Dodatkowa migracja Data Databases
Należy postępować zgodnie z poniższymi krokami wyłącznie wtedy, gdy Extraction/Results databases są również przenoszone na nową instancję. Najpierw należy zrealizować Scenariusz A, a następnie kontynuować na tej stronie.
6. Wykonanie kopii zapasowej oraz odtworzenie Data Databases
- W czasie, gdy usługa dab Nexus jest zatrzymana, należy wykonać pełną kopię zapasową każdej Data Database (Extraction/Results), aby zagwarantować spójność danych
- Odtworzyć każdą bazę na nowej instancji SQL Server
- Potwierdzić, że proces odtworzenia przebiegł pomyślnie
7. Utwórz nowe połączenia SQL w dab Nexus
- Zalogować się do dab Nexus
- Przejść do Settings > SQL Servers
- Utworzyć nowe połączenia SQL kierujące do nowych instancji Extraction/Results
- Przetestować każde połączenie przed dalszymi czynnościami
8. 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
Uwaga: Nie należy usuwać starych zadań przed potwierdzeniem, że zadania sklonowane działają poprawnie.
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.