Testuję swoją aplikację Potrzebuję trochę kodu, który stabilnie symuluje impas na stronie bazy danych (skrypt SQL, jeśli to możliwe).
Dziękuję Ci.
DODANY:
sql-server
deadlock
garik
źródło
źródło
Odpowiedzi:
Najlepszym sposobem byłoby użycie tabel, które już masz. Utwórz dwie tabele - tabela-a, tabela-b W przypadku testu możesz nawet zaktualizować tę samą kolumnę o te same informacje, aby nie wpływać na żadne rzeczywiste dane.
Na przykład UPDATE table_a ustaw ID = ID gdzie ID = 100;
Otwórz dwie sesje dla tej samej bazy danych. Na jeden biegnij
Dwa biegi
Następnie skopiuj instrukcje aktualizacji do sesji przeciwnych i uruchom je w tym samym czasie. W jednym,
We dwóch
Właśnie próbowałem tego teraz i dostałem na MS-SQL
źródło
Użyj
sp_getapplock
systemowej procedury składowanej, aby wziąć to, co kiedykolwiek blokuje twój przykładowy kod.Ściśle mówiąc, jest to semafor Dijkstry . Wciąż cholernie przydatne
źródło
sp_getapplock
nie zgłasza błędu. Będzie albo czekał na upłynięcie limitu czasu, albo (jeśli nie ma limitu czasu) zwróci-3
( msdn.microsoft.com/en-us/library/ms189823.aspx )Oto kolejna metoda podobna do tej zamieszczonej powyżej ->
Skrypt do użycia w oknie zapytania nr 1
Skrypt do użycia w oknie zapytania nr 2
Skrypt do dodania do okna zapytania nr 1
Aby uzyskać dodatkowe informacje na ten temat, patrz http://ajitananthram.wordpress.com/2014/02/23/scripts-to-force-a-deadlock-in-sql-server/
źródło