如何从Sql server 2000上的SqlClient数据提供程序查看上次运行的sql查询?
问题描述:
虽然我已经能够看到最后一个执行存储过程的运行查询,但我没有获得SP调用的参数值。而是我有以下几点:如何从Sql server 2000上的SqlClient数据提供程序查看上次运行的sql查询?
StoredProcedureName;1
从以下命令:
DBCC INPUTBUFFER(SPID)
当我通过在ObjectExplorer->管理 - >活动监视器
查看它得到了SPID有什么办法我可以得到完整的文本,包括执行SP的参数吗?
答
我知道这个答案可能不是你要找的,因为它没有真正回答你的问题,所以我思考了一下,最终认为这可能有帮助。
我不知道你有多少个查询以及你的程序有多大......但为了调试的目的,我想为我的所有查询都做类似的事情,包括纯文本和存储过程。所以我写了一个简单的包装类,让我可以执行纯文本查询/存储过程,无论参数和没有参数。然后,如果发生错误,我将其捕获,使用原始异常以及执行的查询和所有参数构建一个新的自定义异常,并将其全部返回到自定义消息中。我在我的包装使用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
其实,我一直在寻找它,使调试方便,使我得到执行的确切语法的SQL,并且不需要去visual studio并复制异常消息并在sql server中执行它。 – teenup 2010-07-29 04:18:56
这就是我使用它的方式。当抛出一个异常时(我使用ASP.Net),我会在屏幕上看到完整的异常以及全部查询的全部参数。然后,我将它们复制到Toad/SQL Server Management Studio中并手动执行它(如果我只是通过查看它为什么不能看到它)。 我的回答是否有帮助,或者我有修改它的方法吗? – Peter 2010-07-29 13:17:22