Asp.net 如何在SQLServer2000上查看上次从SqlClient数据提供程序运行的sql查询?
虽然我能够看到最后一次运行的查询,这是一个执行的存储过程,但我没有得到调用SP的参数值。相反,我得到的是:Asp.net 如何在SQLServer2000上查看上次从SqlClient数据提供程序运行的sql查询?,asp.net,sql,sql-server-2000,sqlclient,Asp.net,Sql,Sql Server 2000,Sqlclient,虽然我能够看到最后一次运行的查询,这是一个执行的存储过程,但我没有得到调用SP的参数值。相反,我得到的是: StoredProcedureName;1 通过以下命令: DBCC INPUTBUFFER(SPID) 通过在ObjectExplorer->Management->ActivityMonitor中查看SPID,我得到了SPID 有什么方法可以让我得到完整的文本,包括执行SP时使用的参数吗?我知道这个答案可能不是您想要的,因为它并没有真正回答您的问题,我想了一下,最后认为这可能会有所
StoredProcedureName;1
通过以下命令:
DBCC INPUTBUFFER(SPID)
通过在ObjectExplorer->Management->ActivityMonitor中查看SPID,我得到了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
我知道这个答案可能不是你想要的,因为它并没有真正回答你的问题,我想了一下,最后认为这可能会有所帮助 我不知道你有多少疑问,你的程序有多大。。。但出于调试目的,我想对所有查询(包括纯文本查询和存储过程查询)执行类似的操作。因此,我编写了一个简单的包装器类,它允许我在有参数和无参数的情况下执行纯文本查询/存储过程。然后,如果出现执行选项,我将捕获它,用原始异常加上执行的查询和所有参数构建一个新的自定义异常,并在自定义消息中返回所有异常。我在包装器中使用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中执行。这就是我使用它的方式。当抛出异常时(我使用ASP.Net),我会得到完整的异常以及屏幕上所有参数的完整查询。然后我将它们复制到Toad/sqlservermanagementstudio中,并手动执行(如果我仅仅通过查看它看不出它为什么会坏的话)。我的回答有帮助吗?或者我有没有办法修改它,使其能够运行?实际上,我一直在寻找它,以方便调试,这样我就可以执行具有确切语法的sql,而不需要转到visual studio复制异常消息并在sql server中执行。这就是我使用它的方式。当抛出异常时(我使用ASP.Net),我会得到完整的异常以及屏幕上所有参数的完整查询。然后我将它们复制到Toad/sqlservermanagementstudio中,并手动执行(如果我仅仅通过查看它看不出它为什么会坏的话)。我的答案有帮助吗?或者我有没有办法修改它,使它可以?