Je teste ma demande j'ai besoin de code stable simule l'impasse sur le site de base de données (script SQL si possible).
Merci.
AJOUTÉE:
sql-server
deadlock
garik
la source
la source
Réponses:
La meilleure façon serait d'utiliser les tables que vous possédez déjà. Créer deux tables - table-a, table-b Pour un test, vous pouvez même mettre à jour la même colonne avec les mêmes informations afin de ne pas affecter de données réelles.
Par exemple UPDATE table_a set ID = ID où ID = 100;
Ouvrez deux sessions sur la même base de données. Sur un, exécutez
Sur deux pistes
Copiez ensuite les instructions de mise à jour dans les sessions opposées et exécutez-les en même temps. Dans une,
En deux
Je viens de l'essayer maintenant et j'ai utilisé MS-SQL
la source
Utilisez la
sp_getapplock
procédure stockée système pour prendre les verrous dont vous avez besoin sur votre exemple de code.À proprement parler, il s'agit d'un sémaphore Dijkstra . Toujours sacrément utile
la source
sp_getapplock
ne générera pas d'erreur. Il attendra que le délai expire ou (s'il n'y a pas de délai), retourne-3
( msdn.microsoft.com/en-us/library/ms189823.aspx )Voici une autre méthode similaire à celle publiée ci-dessus ->
Script à utiliser dans la fenêtre de requête # 1
Script à utiliser dans la fenêtre de requête # 2
Script à ajouter à la fenêtre de requête # 1
Pour plus de détails à ce sujet, reportez-vous à http://ajitananthram.wordpress.com/2014/02/23/scripts-to-force-a-deadlock-in-sql-server/
la source