2010-07-28 2 views
1

Stored Procedure가 실행 된 마지막 실행 쿼리를 볼 수 있었지만 SP가 호출 된 매개 변수 값을 얻지 못했지만. 다음 명령SQL Server 2000의 SqlClient 데이터 공급자에서 마지막으로 실행 한 sql 쿼리를 보는 방법은 무엇입니까?

StoredProcedureName;1 

:

DBCC INPUTBUFFER(SPID) 

나는 ObjectExplorer-> 관리 -> 액티비티 모니터

에서이를 확인하여 SPID를 가지고 어떤 방법이 있나요 오히려 나는 다음있어 SP가 실행 된 매개 변수를 포함한 전체 텍스트를 얻을 수 있습니까?

답변

1

나는이 답변이 당신이 찾고있는 것이 아닐 수도 있다는 것을 알고 있습니다. 나는 당신의 질문에 정말로 답하지 않기 때문에, 나는 생각의 도약을 취해 이것이 도움이 될 수 있다고 생각하게되었습니다.

얼마나 많은 쿼리가 있고 프로그램이 얼마나 큰지 알 수는 없지만 디버깅 목적으로 모든 쿼리 (일반 텍스트 및 저장 프로 시저 모두)에서 비슷한 작업을 수행하려고합니다. 그래서 간단한 래퍼 클래스를 작성해 매개 변수가 있거나없는 일반 텍스트 쿼리/저장된 procs를 실행할 수있게했습니다. 그런 다음, 실행이 발생하면이를 트랩하고 원래 예외와 실행 된 쿼리 및 모든 매개 변수를 사용하여 새 사용자 지정 예외를 빌드 한 다음 사용자 지정 메시지로 모두 반환합니다. 내 래퍼에 오라클을 사용하고 있지만 거의 정확하게 동일합니다 :

Public Function ExecuteCommandQuery(ByRef oCMD As OracleClient.OracleCommand) As DataTable 
    oCMD.Connection = _oConn 

    Dim dt As New DataTable 

    'exception if one occured' 
    Dim DBException As Exception = Nothing 

    Try 
     'get an adapter' 
     Dim cmd As New OracleDataAdapter(oCMD) 
     'Fill the data table and ket a count of records returned' 
     cmd.Fill(dt) 

    Catch ex As Exception 
     'capture exception, and rethrow after properly closing the Oracle Connection' 
     DBException = ex 
    Finally 
     _oConn.Close() 
    End Try 

    'if exception occured, rethrow' 
    If DBException IsNot Nothing Then 
     Throw New Exception(_ 
      String.Format("A database error occured: {0} " + _ 
          Environment.NewLine + Environment.NewLine + " --- " + _ 
          Environment.NewLine + Environment.NewLine + _ 
          " Your query: {1}" + _ 
          Environment.NewLine + Environment.NewLine + " --- " + _ 
          Environment.NewLine + Environment.NewLine + _ 
          " Your Parameters: " + Environment.NewLine + "{2}" _ 
          , DBException.ToString(), oCMD.CommandText, GenerateParameterErrorInfo(oCMD))) 
    End If 

    Return dt 
End Function 
+0

를 사실, 난 그것이 내가 실행 정확한 구문으로 SQL을 얻을 수 있도록 편리하게 디버깅 할과에 갈 필요가 없습니다 찾고 있었다 Visual Studio 및 예외 메시지를 복사하여 SQL Server에서 실행하십시오. – teenup

+0

그것이 사용 방법입니다. 예외가 throw 될 때 (나는 ASP.Net을 사용함) 화면에 모든 매개 변수가있는 전체 쿼리와 전체 예외를 얻습니다. 그런 다음 Toad/SQL Server Management Studio로 복사 한 다음 수동으로 실행합니다 (왜 파산되었는지 직접 확인할 수없는 경우). 내 답변이 도움이 되었습니까? 아니면 수정할 수있는 방법이 있습니까? – Peter

관련 문제