2009-01-05 10 views
2

J'ai une table contenant des centaines d'entrées et j'essaie de supprimer une petite plage. Cela prend beaucoup de temps, en fait ce n'est pas en cours d'exécution.SQL Delete (Suspendu dans le moniteur d'activité)

J'ai suivi la requête du moniteur d'activité et son statut est « Suspendu »

Est-ce que quelqu'un sait ce qui peut causer ce problème?

Répondre

1

Quel est le SQL que vous utilisez? Des déclencheurs sur la table ou des suppressions en cascade sur des tables sur lesquelles des déclencheurs sont-ils déclenchés? Quelque chose dans la colonne "Bloqué par" ou Type d'attente?

Essayez d'exécuter ce qui suit en studio de gestion (sur la base de données en question):

dbcc checkdb 
dbcc checkcatalog 
+0

SQL Server 2005 et aucun déclencheur –

+0

Désolé, je voulais dire l'instruction SQL :-) –

+0

supprimer de tbl_obejcts où objectname <450 - (seulement 450 Records) –

0

En fonction de la taille de votre base de données et le nombre de contraintes qui doivent être vérifiés lors de la suppression d'une ligne, supprime peut prendre très, très longtemps. Je ne supprime jamais plus d'une ligne à la fois de mes bases de données. C'est trop gourmand en ressources sur le système. C'est l'un des rares endroits où un curseur, ou une itération dans un code autre que la base de données (C#, Java, etc.) peut battre une requête basée sur un ensemble. J'ai même mis un petit délai de quelques millisecondes entre les suppressions pour m'assurer que rien ne se verrouille trop longtemps. Vous pouvez mettre une base de données à genoux en supprimant une plage de données d'une table.