2015-01-19 8 views
3

Я пытаюсь захватить запрос Db для этого ниже фрагмента веб-приложения C# .net.Захват запросов ADO.net DB во время выполнения

Есть способ сделать, если я использую DbProviderfactory, создав прокси-сервер. Но вместо использования DbProviderFactory, если я использую SqlConnection и SqlCommand, как показано ниже, как я могу отслеживать свои вызовы БД?

  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()); 
      } 

Я знаю, что есть профайлеры, чтобы проследить это. Но я хочу сделать это в своей собственной программе.

В основном мне нужно профилировать команды Db Connection и Db в веб-запросе, который не использует в нем DbProviderFactories. Я новичок в разработке профилировщиков для .Net, поэтому я ожидаю некоторых рекомендаций для этого.

Спасибо.

+0

'SqlCommand' закрытый класс, так что использование прокси-сервера, как замок не будет работать. Он наследует [System.MarshalByRefObject] (http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject%28v=vs.110%29.aspx), поэтому возможно было бы как-то вставить сообщение опускается в цепочку. Вот статья на эту тему: [Разделить компоненты путем внедрения пользовательских сервисов в цепочку перехвата вашего объекта] (http://msdn.microsoft.com/en-us/magazine/cc164165.aspx). Если вам удастся, отправьте пример. Я бы хотел сделать то же самое (мне просто не хватает времени, чтобы попробовать). –

ответ

0

Простой, просто запускайте SQL Profiler, и когда вы переходите через строку myCommand.ExecuteReader(), смотрите, как SQL запускается в профилировщике.

Для получения дополнительной информации см: https://msdn.microsoft.com/en-us/library/ff650699.aspx