1

実行されたストアドプロシージャである最後に実行されたクエリを確認できましたが、SPが呼び出されたパラメーター値を取得できませんでした。むしろ私は次のものを得ました:

StoredProcedureName;1

次のコマンドから:

DBCC INPUTBUFFER(SPID)

ObjectExplorer->Management->ActivityMonitorで表示してSPIDを取得した場所

SPが実行されたパラメータを含む完全なテキストを取得する方法はありますか?

4

1 に答える 1

1

この答えはあなたが探しているものではないかもしれません.あなたの質問に実際には答えていないので.

クエリの数とプログラムの大きさはわかりませんが、デバッグの目的で、プレーン テキストとストアド プロシージャの両方で、すべてのクエリに対して同様のことを行いたいと考えていました。そこで、パラメータの有無にかかわらず、プレーン テキスト クエリ/ストアド プロシージャを実行できる単純なラッパー クラスを作成しました。次に、例外が発生した場合は、それをトラップし、元の例外に加えて実行されたクエリとすべてのパラメーターを使用して新しいカスタム例外を作成し、カスタム メッセージですべてを返します。ラッパーで 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
于 2010-07-28T19:45:07.583 に答える