捕获ADO.net DB查询运行时

时间:2015-01-19 07:09:04

标签: .net ado.net sqlclr dbproviderfactories clrprofiler

我正在尝试捕获下面这个C#.net Web应用程序的Db查询。

如果我通过代理它来使用DbProviderfactory,还有办法。但是,如果我直接使用SqlConnection和SqlCommand,而不是使用DbProviderFactory,如何跟踪我的数据库调用?

            SqlConnection myConn = new SqlConnection(@"Server=192.168.23.99;Initial Catalog=cat1;User ID=user21;Password=userpwd");
            SqlCommand myCommand = new SqlCommand("select * from table1", myConn);
            SqlDataReader dataReader;

            System.Threading.Thread.Sleep(5000);
            try
            {
                myConn.Open();
                dataReader = myCommand.ExecuteReader();

                GridView1.DataSource = dataReader;
                GridView1.DataBind();
                dataReader.Close();
                myCommand.Dispose();
                myConn.Close();
            }
            catch (System.Exception ex)
            {
                Response.Write(ex.ToString());
            }

我知道有一些分析器可以追踪这个。但是,我想在我自己的程序中这样做。

基本上我需要在Web请求中分析Db Connection和Db命令,其中不使用DbProviderFactories。我是开发.Net的分析器的新手,所以我希望有一些指导方针来做这件事。

感谢。

1 个答案:

答案 0 :(得分:0)

简单,只需运行SQL事件探查器,当您跳过myCommand.ExecuteReader()行时,请查看在事件探查器中运行的SQL。

有关详细信息,请参阅: https://msdn.microsoft.com/en-us/library/ff650699.aspx