Mam problemy z bazą danych.
Mogę uruchamiać podstawowe zapytania, choć znacznie wolniej niż zwykle.
Gdy próbuję wyświetlić drzewa hierarchii dla tabel, widoków lub procedur w Eksploratorze obiektów SSMS, otrzymuję
lock request time out period exceeded
.Moje raporty SSRS, które działają na obiektach w tej bazie danych, nie są już uzupełniane.
Zadania związane z procedurami przechowywanymi w tej bazie danych również nie są uruchamiane.
Próbowałem sp_who2
znaleźć i zabić wszystkie połączenia w bazie danych, ale to nie rozwiązało problemu.
Co tu się dzieje? Jak mogę to rozwiązać?
sql-server
sql-server-2008
Lloyd Banks
źródło
źródło
Odpowiedzi:
Było to spowodowane ciągłym wycofywaniem transakcji. Musiałem ostatecznie zrestartować mój klaster serwerów
źródło
Pomijając rozważanie Harware, być może trzeba uruchomić skrypt, aby sprawdzić, jakie działanie wstrzymuje sesję SQL, jednym z typowych scenariuszy jest niestosowanie
Implicit transactions Option
SQL Server Management Studio.źródło
locking request time out period exceed
, powiedziałbym, że bieganieimplicit transaction option
dałoby lepszy trop przyczyn.Problem ten wystąpił, gdy rozpocząłem jawną transakcję, w której utworzyłem tabelę w tempdb ze skryptu uruchomionego w innej bazie danych (nie tempdb). Kiedy zatwierdziłem transakcję, zatwierdzenie nie zwalniało blokady na stole, który utworzyłem w tempdb.
Dzięki tej stronie wykonałem
USE
tempdb i wykonałemDBCC OPENTRAN
i dostałem SPID połączenia z tempdb, które spowodowało blokadę. Więc jaKILL <SPID number>
go zabiję.Niezbyt wdzięczny i straciłem wszystkie informacje w tabeli, którą utworzyłem w tempdb, ale w moim przypadku było to OK.
źródło
Jest tak wiele rzeczy, które mogą być, że wszystko, co mogę zaoferować, to kilka pytań, które pomogą ci znaleźć odpowiedź.
Czy baza danych na serwerze jest przeznaczona tylko do uruchamiania programu SQL Server? Jeśli nie, inne procesy mogą zakłócać kradzież cennego czasu procesora.
Czy serwer DB zasadniczo nie ma pamięci? SQL Server będzie próbował przydzielić każdy bajt, jaki może, ale jeśli jest na pojemności, a twoje zapytania wymagają załadowania większej ilości danych, musi wrócić do korzystania z pamięci wirtualnej, co radykalnie zwiększa czas, który mogą zająć nawet proste zapytania.
Czy przepustowość sieci serwera DB jest zbyt mała, aby poradzić sobie z przesyłaniem danych w odpowiednim czasie?
Pod koniec dnia wygląda na to, że komputer, na którym hostujesz SQL Server, jest za mały, abyś mógł to zrobić. Jest całkiem możliwe, że w końcu osiągnąłeś limity sprzętowe, w których wydajność spada radykalnie. Jeśli tak jest (powyższe pytania pomogą ci to ustalić), będziesz chciał przenieść bazę danych na serwer, który jest odpowiednio dostosowany do ilości danych (i zapytań), które próbujesz przetworzyć.
Może to oznaczać używanie szybszych procesorów, szybszych dysków lub po prostu instalowanie większej ilości pamięci RAM.
źródło
„Kiedy próbuję wyświetlić drzewa hierarchii dla tabel, widoków lub procedur w Eksploratorze obiektów SSMS, otrzymuję przekroczony limit czasu żądania blokady”.
Miałem dokładnie ten sam problem. Poszedłem do okna wykonywania zapytania i; wpisana i wykonana
ROLLBACK
instrukcja.Wygląda na to, że niektóre z serii instrukcji, które wcześniej wykonywałem, były otwarte. W szczególności dlatego, że niektóre z nich zawierały instrukcje DDL. Po wydaniu wycofania hierarchie obiektów zaczęły działać.
źródło
Jak wielu już zauważyło, zwykle trwa długotrwała transakcja, głównie spowodowała, że moja miss użyła USTAWIEŃ TRANSAKCJI IMPLICIT WŁĄCZONYCH, których w ogóle nie należy używać. Aby dowiedzieć się, dlaczego warto zapoznać się z wnikliwym artykułem Brenta Ozara
W każdym razie możesz uzyskać listę długo trwających transakcji za pomocą następującego zapytania.
https://www.brentozar.com/archive/2018/02/set-implicit_transactions-one-hell-bad-idea/
źródło