2009-07-24 6 views
25

L'exécution de la requête suivante dans SQL Server Management Studio génère l'erreur ci-dessous.Erreur SQL Server lors de la mise à jour - "Une erreur grave s'est produite sur la commande en cours"

update table_name set is_active = 0 where id = 3 

A severe error occurred on the current command. The results, if any, should be discarded.

  • Les journaux ont été tronqués
  • il y a un déclencheur de mise à jour, mais ce n'est pas la question
  • le nombre de transactions est égal à zéro (@@ trancount)

I J'ai essayé la même instruction de mise à jour sur quelques autres tables de la base de données et elles fonctionnent correctement.

DBCC CHECKTABLE('table_name'); 

donne

DBCC results for 'table_name'. 
There are 13 rows in 1 pages for object "table_name". 
DBCC execution completed. If DBCC printed error messages, contact your system administrator. 

Répondre

35

J'ai juste eu la même erreur, et c'était à un index corrompu. La réindexation de la table a corrigé le problème. Je me rends compte que ce fil a un an, mais je pensais qu'il serait utile de mentionner quelqu'un au cas où il viendrait à l'avenir (comme je viens de le faire).

+0

J'ai eu exactement la même erreur aujourd'hui. La colonne qui lançait l'erreur n'était même pas impliquée avec l'index qui était corrompu non plus. –

4

Run DBCC CHECKTABLE('table_name');

Vérifiez le dossier LOG où le isntance est installé (\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG habituellement) pour tout fichier nommé 'SQLDUMP*'

+0

na pas checktable rien donner, je vais essayer d'avoir accès à la fichiers journaux - merci. –

+0

Essayez également DBCC CHECKDB (yourdb) pour étendre la vérification à l'ensemble de la base de données. Si vous trouvez des fichiers de vidage, regardez dans les nouveaux fichiers sqldump * .txt. –

8

Dans mon cas, j'utilisais SubQuery et j'avais le même problème. J'ai réalisé que le problème venait des fuites de mémoire.

Redémarrage MSSQL service provoquer le vidage tempDb ressource et libre quantité énorme de mémoire. donc c'était résoudre le problème.

+0

une solution de contournement? – Amir

1

Dans mon cas, j'utilisais System.Threading.CancellationTokenSource d'annuler une SqlCommand mais pas gérer l'exception avec catch (SqlException) { }

Questions connexes