[MSSQL] Jak rozpoznać restart serwera

0

Cześć, nie wiem dokładnie, czy trafiłem w dobre forum.
Mam aplikację bazodanową w Delphi.

Niestety, jeśli podczas jej działania zostanie zrestartowany serwer, to kolejne zapytania powodują różne błędy. Aby tego uniknąć muszę zamknąć połączenie z bazą i otworzyć je jeszcze raz.

Czy mogę w jakiś sposób rozpoznać, kiedy serwer MSSQL został zrestartowany?

0

Co to sa 'rozne bledy'? Te rozne bledy powinny wlasnie wskazywac na potrzebe odswiezenia polaczenia z baza.

0
johny_bravo napisał(a)

Co to sa 'rozne bledy'? Te rozne bledy powinny wlasnie wskazywac na potrzebe odswiezenia polaczenia z baza.

Dokładny komunikat: "Błąd połączenia".
Ale sam komunikat mi tak naprawdę nic nie daje.

Bo ja chcę osiągnąć coś takiego:

  • wykonanie insertu
  • jeśli wystąpi błąd to restart połączenia i ponowne wykonanie insertu

Tylko oczywiście jest to złe rozwiązanie, bo nie mogę wywołać rekurencyjnie w bloku except, bo wtedy źle utworzone zapytanie spowoduje zapętlenie aplikacji.

Nie wiem, czy błąd, który wyskakuje ma określony typ, np: EInvalidConnection(typ wzięty z powietrza), czy bardziej ogólny, np: EADOError :)

Tak więc temat nadal aktualny - jak rozpoznać, że serwer został zrestartowany?

(Mógłbym restartować połączenie przed KAŻDYM wykonaniem SQLa(select, insert, update, cokolwiek), ale to wg mnie idiotyzm.)

0

Czego uzywasz do polaczenia z baza? To cos (biblioteka?) powinno miec jakas funkcjonalnosc pozwalajaca sprawdzic czy dane polaczenie nie zostalo np. zerwane. Zwykle do polaczenia stosuje sie jakis singleton, ktory w GetInstance od razu sprawdza Status == Broken, czy cos w tym stylu i w razie potrzeby resetuje polaczenie. Sprawdz sobie dokumentacje.

0
johny_bravo napisał(a)

Czego uzywasz do polaczenia z baza?

TADOConnection

To cos (biblioteka?) powinno miec jakas funkcjonalnosc pozwalajaca sprawdzic czy dane polaczenie nie zostalo np. zerwane. Zwykle do polaczenia stosuje sie jakis singleton, ktory w GetInstance od razu sprawdza Status == Broken, czy cos w tym stylu i w razie potrzeby resetuje polaczenie. Sprawdz sobie dokumentacje.

Luknę dokumentację, ale wątpię, że coś takiego tam jest. Dam znać, jak wyczytam, lub nie :)

0
Juhas napisał(a)

TADOConnection

Google wiele nie zwraca na ten temat, ale cos w tym stylu powinno byc dostepne, skoro to implementacja ADO.

0

W prawdzie niewiele mi to dało, ale mnie naprowadziło. Otóż TADOConnection ma taką właściwość jak Errors. Wywołałem ten błąd i znalazłem jego kod. Oczywiście akurat tego kodu nie ma na stronach msdn ;> Mam tylko nadzieję, że jest niezmienny w zależności od providera, bo wtedy cała robota na marne.

Niebawem umieszczę w serwisie całą klasę, to możesz obcenić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1