0 votes

SQL brut envoyé au serveur SQL depuis .NET lors d'un appel de procédure stockée

Existe-t-il un moyen d'obtenir le texte brut qui est envoyé au serveur SQL, tel qu'il apparaît dans SQL Profiler, à partir de l'appel ADO.NET ?

using(SqlConnection conn = new SqlConnection(connString)) {
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "GetSomeData";
    cmd.Parameters.Add("@id").Value = someId;
    cmd.Parameters.Add("@someOtherParam").Value = "hello";

    conn.Open();
    SqlDataReader dr = cmd.ExecuteReader();

    // this sends up the call: exec GetSomeData @id=24, @someOtherParam='hello'
    // how can I capture that and write it to debug?

    Debug.Write("exec GetSomeData @id=24, @someOtherParam='hello'");

}

2voto

Tom Cabanski Points 4952

Je ne pense pas qu'il y ait un moyen d'obtenir ce que vous voulez d'une seule propriété ou méthode. Nous avions l'habitude d'écrire une simple fonction statique pour extraire le texte, puis d'itérer sur la collection de paramètres pour extraire les valeurs des paramètres. De nos jours, on peut même en faire une méthode d'extension pour qu'elle ressemble à une méthode de l'objet SqlCommand.

1voto

marc_s Points 321990

Pas dans votre programme C# - vous devriez connecter SQL Profiler et surveiller ce qui est envoyé à votre serveur SQL.

0voto

Terrapin Points 15061

Vous pouvez éventuellement créer une autre procédure stockée à cette fin. Votre procédure stockée prendrait comme argument le nom d'une autre procédure stockée, puis irait chercher sa définition dans la base de données de l'entreprise. syscomments table.

Ou vous pouvez simplement demander syscomments directement à partir de votre application ASP.NET.

select text from syscomments where id = OBJECT_ID('NameOfSproc')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X