虽然我已经能够看到上次运行的查询,这是一个已执行的存储过程但我没有得到调用SP的参数值。相反,我得到了以下内容:
StoredProcedureName;1
来自以下命令:
DBCC INPUTBUFFER(SPID)
通过在ObjectExplorer-> Management-> ActivityMonitor
中查看SPID获得SPID的位置有什么方法可以获得完整的文本,包括执行SP的参数吗?
答案 0 :(得分:1)
我知道这个答案可能不是你想要的,因为它并没有真正回答你的问题,我进行了一次思考,最后认为这可能有所帮助。
我不知道你有多少查询以及你的程序有多大......但出于调试目的,我想为我的所有查询做一些类似的事情,包括纯文本和存储过程。所以我编写了一个简单的包装类,它允许我使用和不使用参数执行纯文本查询/存储过程。然后,如果发生了execption,我会捕获它,使用原始异常以及执行的查询和所有参数构建一个新的自定义异常,并在自定义消息中返回所有这些异常。我在我的包装器中使用Oracle但它几乎完全相同:
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