2015-01-19 7 views
3

아래 C# .net 웹 응용 프로그램에 대해 Db 쿼리를 캡처하려고합니다.ADO.net DB 쿼리 실행 시간 캡처

DbProviderfactory를 프록시로 사용하면 할 수있는 방법이 있습니다. 하지만 아래의 SqlConnection과 SqlCommand를 직접 사용하는 경우 DbProviderFactory를 사용하는 대신 DB 호출을 어떻게 추적 할 수 있습니까?

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

나는 이것을 추적하는 프로파일 러가 있다는 것을 알고 있습니다. 그러나, 나는 내 자신의 계획에서 이것을하고 싶다.

기본적으로 DbProviderFactories를 사용하지 않는 웹 요청에서 Db Connection 및 Db 명령을 프로파일 링해야합니다. 나는 .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 프로파일 러를 실행하고 myCommand.ExecuteReader() 줄을 건너 뛸 때 SQL이 프로파일 러에서 실행되는지보십시오.

대한 추가 정보를 원하시면 다음을 참조하십시오 https://msdn.microsoft.com/en-us/library/ff650699.aspx