SqlException: Impasse

J'ai ces deux exceptions générées lorsque j'essaie de récupérer les données de la base de données SQL en C#:

Système.Les données.SqlClient.SqlException: Transaction (ID de Processus 97) a été bloquée sur les ressources par un autre processus et a été choisie comme victime.

OU

Système.Les données.SqlClient.SqlException: Transaction (ID de Processus 62) a été bloquée sur les ressources par un autre processus et a été choisie comme victime.

OU

Système.Les données.SqlClient.SqlException: Transaction (ID de Processus 54) a été bloquée sur les ressources par un autre processus et a été choisie comme victime. Exécutez à nouveau l'opération.

c'est le code:

 using (SqlConnection con = new SqlConnection(datasource))
 {
    SqlCommand cmd = new SqlCommand("Select * from MyTable Where ID='1' ", con);
    cmd.CommandTimeout = 300;
    con.Open();
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adapter.Fill(ds);
    con.Close();
    return ds.Tables[0];
 }

Cela s'est passé à chaque fois.

Toutes les idées sur la façon de résoudre ces problèmes?

Avez-vous eu cette exception un moment ou il arrive à chaque fois que vous essayez?
Pourriez-vous montrer votre requête?
Il doit y avoir d'autres requêtes s'exécutent en même temps, c'est pourquoi il blocages. Deux ou plusieurs requêtes veulent avoir accès aux mêmes données. Nous avons besoin de voir toutes les requêtes qui sont en cours d'exécution, et pas seulement celle qui devient la victime.
Vous ne pouvez pas obtenir un blocage à partir d'une requête comme ça. Il nécessite un verrou en lecture sur 1 ligne 1 table. Même si un autre processus a le verrou, il aurait attendu heureux jusqu'à ce que la demande dépassé. Pour obtenir une impasse, généralement de Fabrication1 a verrouillage A et est en attente de verrouillage B; tandis que Process2 a verrouillage B et est en attente de verrouillage A. Il doit y avoir quelques autres requêtes concernées. Exécutez le générateur de profils Sql Server (msdn.microsoft.com/en-us/library/ms187929.aspx) et de surveiller ce que les requêtes sont en cours d'exécution sur votre base de données.
Plus de Profiler et de l'impasse l'analyse des liens: (1) support.microsoft.com/default.aspx?scid=kb;en-us;832524 (2) msdn.microsoft.com/en-us/library/ms188246.aspx (3) msdn.microsoft.com/en-us/library/ms190465.aspx

OriginalL'auteur Harold SOTA | 2010-11-30