2010-05-12 5 views
1

J'ai une grande procédure stockée d'audit qui imprime des valeurs et exécute des instructions SELECT. Lors de l'exécution dans SQL Management Studio, il est possible d'afficher select "Results to Text" afin que tous les résultats SQL et l'instruction print s'affichent au même endroit.Comment enregistrer une sortie SQL dans un fichier texte sur un client à partir du C#

Maintenant, j'ai besoin d'un code C# appelez également cette procédure d'audit à la fin du processus et stocker essentiellement toutes les données qui seraient dans la fenêtre "Results to Text" dans un fichier .txt.

Comment cela peut-il être fait?

Répondre

2

Vous pouvez obtenir la sortie PRINT mais pas de la même manière que les résultats. Si votre sortie suppose une séquence spécifique de données PRINT et resultset, ce n'est pas vraiment possible.

Vous pouvez obtenir la sortie d'impression via un rappel/eventhandler:

SqlConnection c ... 
c.InfoMessage += new SqlInfoMessageEventHandler(cb_Msg); 

...

void cb_Msg(object sender, SqlInfoMessageEventArgs e) 
{ 
    // e.Message has a line of PRINT output 
} 

Lorsque vous exécutez quelque chose contre cette SqlConnection, il appellera que le rappel pour chaque ligne de sortie imprimée.

1

Il vaudrait mieux ajouter un paramètre de sortie au sp et mettre le texte en sortie. Ensuite, lorsque vous appelez le sp dans votre code, vous obtenez votre resultset et le texte séparément et vous pouvez les afficher comme vous le souhaitez.

Questions connexes