如何在Sql server 2000上查看SqlClient数据提供程序的最后一次运行sql查询?

时间:2010-07-28 08:09:42

标签: asp.net sql sql-server-2000 sqlclient

虽然我已经能够看到上次运行的查询,这是一个已执行的存储过程但我没有得到调用SP的参数值。相反,我得到了以下内容:

StoredProcedureName;1

来自以下命令:

DBCC INPUTBUFFER(SPID)

通过在ObjectExplorer-> Management-> ActivityMonitor

中查看SPID获得SPID的位置

有什么方法可以获得完整的文本,包括执行SP的参数吗?

1 个答案:

答案 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