Serveur d'impression

serveur SQL – instruction PRINT dans T-SQL – Serveur d’impression

Par Titanfall , le 2 mai 2019 - 2 minutes de lecture

L'instruction Print dans TSQL est une créature mal comprise, probablement à cause de son nom. En fait, il envoie un message au mécanisme de traitement des erreurs / messages qui le transfère ensuite à l'application appelante. IMPRIMER est assez bête. Vous ne pouvez envoyer que 8 000 caractères (4 000 caractères Unicode). Vous pouvez envoyer une chaîne littérale, une variable de chaîne (varchar ou char) ou une expression de chaîne. Si vous utilisez RAISERROR, vous êtes limité à une chaîne de 2 044 caractères. Cependant, il est beaucoup plus facile de l'utiliser pour envoyer des informations à l'application appelante, car elle appelle une fonction de formatage similaire à l'ancienne printf de la bibliothèque standard C. RAISERROR peut également spécifier un numéro d'erreur, une gravité et un code d'état en plus du message texte. Il peut également être utilisé pour renvoyer des messages définis par l'utilisateur créés à l'aide de la procédure stockée système sp_addmessage. Vous pouvez également forcer la journalisation des messages.

Vos routines de traitement des erreurs ne serviront pas à recevoir des messages, même si les messages et les erreurs sont si semblables. Bien entendu, la technique varie en fonction de la manière dont vous vous connectez à la base de données (OLBC, OLEDB, etc.). Pour recevoir et traiter les messages du moteur de base de données SQL Server, lorsque vous utilisez System.Data.SQLClient, vous devez créer un délégué SqlInfoMessageEventHandler, identifiant la méthode qui gère l'événement, pour écouter l'événement InfoMessage. sur la classe SqlConnection. Vous constaterez que les informations de contexte de message, telles que la gravité et l'état, sont transmises en tant qu'arguments au rappel, car du point de vue du système, ces messages ressemblent à des erreurs.

Il est toujours judicieux de pouvoir insérer ces messages dans votre application, même si vous ne faites que mettre en file d'attente dans un fichier, car ils seront toujours utiles si vous essayez de résoudre un problème très obscur. Cependant, je ne peux pas penser que je voudrais que les utilisateurs finaux les voient jamais à moins que vous ne puissiez réserver un niveau d’information affichant des éléments dans l’application.

Click to rate this post!
[Total: 0 Average: 0]

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.