나는이 답변이 당신이 찾고있는 것이 아닐 수도 있다는 것을 알고 있습니다. 나는 당신의 질문에 정말로 답하지 않기 때문에, 나는 생각의 도약을 취해 이것이 도움이 될 수 있다고 생각하게되었습니다.
얼마나 많은 쿼리가 있고 프로그램이 얼마나 큰지 알 수는 없지만 디버깅 목적으로 모든 쿼리 (일반 텍스트 및 저장 프로 시저 모두)에서 비슷한 작업을 수행하려고합니다. 그래서 간단한 래퍼 클래스를 작성해 매개 변수가 있거나없는 일반 텍스트 쿼리/저장된 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
를 사실, 난 그것이 내가 실행 정확한 구문으로 SQL을 얻을 수 있도록 편리하게 디버깅 할과에 갈 필요가 없습니다 찾고 있었다 Visual Studio 및 예외 메시지를 복사하여 SQL Server에서 실행하십시오. – teenup
그것이 사용 방법입니다. 예외가 throw 될 때 (나는 ASP.Net을 사용함) 화면에 모든 매개 변수가있는 전체 쿼리와 전체 예외를 얻습니다. 그런 다음 Toad/SQL Server Management Studio로 복사 한 다음 수동으로 실행합니다 (왜 파산되었는지 직접 확인할 수없는 경우). 내 답변이 도움이 되었습니까? 아니면 수정할 수있는 방법이 있습니까? – Peter