Je suis un déclencheur dans une base de données de serveur SQL avec un comportement très étrange, ce sont les instructions étranges:Stringe erreur de déclenchement du délai d'attente
...
EXEC [ope].[spMissionDepartment] @AircraftId = @vnAircraftId
RAISERROR('test error', 16, 1)
END TRY
BEGIN CATCH
SELECT @ErrorMessage = ERROR_MESSAGE()
ROLLBACK TRANSACTION
RAISERROR(@ErrorMessage, 16, 1) -- strange line
END CATCH
Le comportement étrange est ceci:
Si je supprime l'étrange ligne que je reçois dans la page Web l'erreur
TIMEOUT EXPIRÉ. LA PÉRIODE DE TEMPS ÉCOULÉE AVANT L'ACHÈVEMENT DE L'OPÉRATION OU LE SERVEUR NE RÉPOND PAS.
autrement, si je ne pas enlever la ligne étrange, je reçois l'erreur
erreur de test
Il n'y a pas d'autres déclencheurs, de sorte que le exec devrait être la dernière instruction exécutée, comment est-ce possible que je reçois un Timeout seulement sans le Raiserror?
essayer à la ligne étrange 'RAISERROR (@ErrorMessage, 9, 1)' –
Mais si j'utilise 9 comme la gravité, il continuera, et est donc comme il n'y a pas _Raiserror_, le comportement étrange est que la _Raiserror_ devrait être la dernière instruction exécutée, alors pourquoi il y a un timeout après? – davidinho
Peut-être que cela peut vous aider http://sqlhints.com/2013/06/30/differences-between-raiserror-and-throw-in-sql-server/ – GuidoG