2010-04-20 5 views
0

Existe-t-il un moyen d'obtenir le texte brut envoyé à SQL Server, comme dans SQL Profiler, à partir de l'appel ADO.NET?SQL brut envoyé à SQL Server à partir de .NET lors d'un appel de procédure stockée

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'"); 

} 

Répondre

2

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

1

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

0

Vous pouvez éventuellement créer une autre procédure stockée à cette fin. Votre procédure stockée prendra comme argument le nom d'une autre procédure stockée, puis recherchera sa définition dans la table syscomments.

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

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

Questions connexes