Mamy cykliczne wydarzenie, w którym wiele połączeń zawiesza się na TM REQUEST (od sys.dm_os_waiting_tasks
) i nie robi postępów. KILL
na chorego session_id
nic nie robi
Serwer uruchamia dublowanie bazy danych (2008R2). Wstrzymywanie i wznawianie kopii lustrzanej rozwiązuje problem, gdy się zdarza.
Sesja utknięta w tym stanie jest niemożliwa do zabicia. Obciążenie lustra jest zwykłe, a nie pękające. Po zatrzymaniu dużej liczby połączeń w tym stanie system zawiesza się, a kopia lustrzana przestaje się replikować (wszystkie zapytania są blokowane).
Czy ktoś już to widział i wiedział, co go powoduje? W dziennikach błędów nie ma nic.
sql-server
Thomas Kejser
źródło
źródło
fiber mode
?resource_description
ustawiony?Odpowiedzi:
TM oznacza Transaction Manager. Bieżące polecenie ustawione na Żądanie TM oznacza, że wątek aktualnie obsługuje żądanie DTC (Distributed Transaction Coordinator) w celu zarejestrowania się w transakcji DTC, defektu z niej, lub zatwierdzenia, itd. Transakcje rozproszone nie są obsługiwane dla Dublowania bazy danych, ponieważ nie może zagwarantować integralności transakcji. Pomiń transakcje DTC, a to powinno zniknąć.
źródło
sp_configure 'Ad Hoc Distributed Queries'
włączony? - Być może jakiś system wydaje transakcje między bazami danych przy użyciuOPENQUERY
instrukcji ad-hoc lub czegoś takiego?Service Broker używa menedżera transakcji SQL Server zamiast Microsoft Distributed Transaction Coordinator (MS DTC). Transakcja nie odbywa się między instancjami, ale w ramach instancji. Czy używasz Service Brokera?
źródło