如何从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 
+0

其实,我一直在寻找它,使调试方便,使我得到执行的确切语法的SQL,并且不需要去visual studio并复制异常消息并在sql server中执行它。 – teenup 2010-07-29 04:18:56

+0

这就是我使用它的方式。当抛出一个异常时(我使用ASP.Net),我会在屏幕上看到完整的异常以及全部查询的全部参数。然后,我将它们复制到Toad/SQL Server Management Studio中并手动执行它(如果我只是通过查看它为什么不能看到它)。 我的回答是否有帮助,或者我有修改它的方法吗? – Peter 2010-07-29 13:17:22