SQL Azure - Jedna sesja blokuje cały DB dla aktualizacji i wstawiania

Problem z SQL Azure.

Mam problem, który występuje jako następujący wyjątek w naszej witrynie (asp.net):

Limit czasu upłynął. Limit czasu, który upłynął przed zakończeniem operacji lub serwer nie odpowiada. Oświadczenie zostało zakończone.

Powoduje również aktualizację i wstawianie instrukcji nigdy nie kończących się w SMSS. Podczas zapytania nie ma żadnych blokad X lub IX:sys.dm_tran_locks i nie ma żadnych transakcji podczas kwerendysys.dm_tran_active_transactions lubsys.dm_tran_database_transactions.

Problem występuje dla każdej tabeli w bazie danych, ale inne bazy danych w tej samej instancji nie powodują problemu. Czas trwania problemu może wynosić od 2 minut do 2 godzin i nie występuje o określonej porze dnia.

Baza danych nie jest pełna.

W pewnym momencie ten problem sam się nie rozwiązał, ale udało mi się rozwiązać ten problem, wysyłając zapytaniesys.dm_exec_connections znalezienie najdłuższej działającej sesji, a następnie zabicie jej. Dziwne jest to, że połączenie miało 15 minut, ale problem blokady był obecny przez ponad 3 godziny.

Czy mogę jeszcze coś sprawdzić?

EDYTOWAĆ

Zgodnie z odpowiedzią Pawła poniżej. Właściwie wyśledziłem problem, zanim odpowiedział. Poniżej zamieszczę kroki, które posłużyły mi do rozwiązania tego problemu, na wypadek, gdyby pomogły komuś innemu.

Następujące zapytania zostały uruchomione, gdy obecny był „limit czasu”.

select *  from sys.dm_exec_requests

Jak widzimy, wszystkie żądania WAIT czekają na sesji 1021, która jest żądaniem replikacji! TheTM Request wskazuje transakcję DTC i nie korzystamy z transakcji rozproszonych. Możesz także zobaczyć typ wait_tySE_REPL_COMMIT_ACK co ponownie implikuje replikację.

select * from  sys.dm_tran_locks

Ponownie czeka na sesję 1021

SELECT * FROM sys.dm_db_wait_stats ORDER BY wait_time_ms desc

I tak,SE_REPL_CATCHUP_THROTTLE ma łączny czas oczekiwania 8094034 ms, czyli 134,9 minut !!!

Zobacz także następujące forum, aby uzyskać szczegółowe informacje na temat tego problemu.http://social.technet.microsoft.com/Forums/en-US/ssdsgetstarted/thread/c3003a28-8beb-4860-85b2-03cf6d0312a8

W mojej komunikacji z Microsoftem otrzymałem następującą odpowiedź (widzieliśmy ten problem w 4 z naszych 15 baz danych w centrum danych UE):

Pytanie: Czy w ciągu ostatnich trzech tygodni nastąpiły zmiany w tych ograniczeniach miękkiego dławienia, tj. Od kiedy zaczęły się moje problemy?

Odpowiedź: Nie, nie ma.

Pytanie: Czy istnieją sposoby zapobiegania lub ostrzegania, że ​​zbliżamy się do limitu?

Odpowiedź: Nie. Problem może nie być spowodowany przez aplikację, ale może być spowodowany przez innych najemców, którzy korzystają z tego samego sprzętu fizycznego. Innymi słowy, aplikacja może mieć bardzo małe obciążenie i nadal napotykać problem. Innymi słowy, własny ruch może być przyczyną tego problemu, ale równie dobrze może być spowodowany przez innych najemców, którzy polegają na tym samym fizycznym sprzęcie. Nie ma możliwości wcześniejszego dowiedzenia się, że problem wkrótce wystąpi - może wystąpić w dowolnym momencie bez ostrzeżenia. Zespół operacyjny SQL Azure nie monitoruje tego typu błędów, więc nie spróbuje automatycznie rozwiązać problemu. Więc jeśli napotkasz na to, masz dwie opcje:

Utwórz kopię swojej bazy danych i użyj jej, i miej nadzieję, że db zostanie umieszczony na innym serwerze z mniejszym obciążeniem.

Skontaktuj się z pomocą techniczną Windows Azure i poinformuj o problemie i pozwól im wykonać dla Ciebie opcję 1

questionAnswers(1)

yourAnswerToTheQuestion