2010-12-03 22 views

Répondre

31

essayez ceci:

begin try 

    --your inserts here 

end try 
begin catch 
    --returns the complete original error message as a result set 
    SELECT 
     ERROR_NUMBER() AS ErrorNumber 
     ,ERROR_SEVERITY() AS ErrorSeverity 
     ,ERROR_STATE() AS ErrorState 
     ,ERROR_PROCEDURE() AS ErrorProcedure 
     ,ERROR_LINE() AS ErrorLine 
     ,ERROR_MESSAGE() AS ErrorMessage 

    --will return the complete original error message as an error message 
    DECLARE @ErrorMessage nvarchar(400), @ErrorNumber int, @ErrorSeverity int, @ErrorState int, @ErrorLine int 
    SELECT @ErrorMessage = N'Error %d, Line %d, Message: '+ERROR_MESSAGE(),@ErrorNumber = ERROR_NUMBER(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(),@ErrorLine = ERROR_LINE() 
    RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState, @ErrorNumber,@ErrorLine) 
end catch 
+0

douce qui est un peu pratique de code merci! –

+2

Si vous ajoutez "WITH LOG" à la fin de RAISERROR, il placera une copie de l'erreur dans le journal des applications SQL Server. Notez ces règles "Consigne l'erreur dans le journal des erreurs et le journal des applications pour l'instance du moteur de base de données Microsoft SQL Server Les erreurs consignées dans le journal des erreurs sont actuellement limitées à un maximum de 440 octets. rôle ou un utilisateur avec des autorisations ALTER TRACE peuvent spécifier WITH LOG. " –

+0

J'avais ce message d'erreur avec aucune information quand le panneau de l'éditeur de texte de 15 sql était ouvert, j'ai fermé tous les panneaux d'éditeur de texte de sql et ai ouvert le manuscrit pour exécuter et travaillé .. – dankyy1