Przejście do głównej treści

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ć:

  1. Przekroczeniem czasu połączenia z Application Database
  2. Nieudanymi operacjami zapisu aktualizującymi stan zadań
  3. 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
Ważne

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
Uwaga

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

  1. Problemy sieciowe między dab Nexus a SQL Server
  2. Przeciążona SQL Server (problem współdzielonej instancji)
  3. Firewall blokuje połączenia
  4. SQL Server nie skonfigurowano do zdalnych połączeń

Rozwiązania

  • Zweryfikować łączność sieciową za pomocą Test-NetConnection lub telnet do 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 (lub db_datareader, db_datawriter, db_ddladmin)
  • Extraction/Results databases: rola dbcreator na poziomie instancji (dla automatycznego tworzenia) lub db_owner w przypadku predefiniowanych baz

Szczegółowe wymagania opisano w Setup MS SQL-Server.