Sql-Server-2005
如何在伺服器跟踪期間查看 sql 語句中使用的變數的值?
我有一個儲存過程,其中包含帶有變數的 SQL 語句。例如,
update customer set cust_id = @newcust_id where issuedate < @transferdate and cust_id = @oldcust_id
變數的值在 SP 中較早地分配。
如何在伺服器跟踪期間顯示這些變數的值?
出於調試目的,您可以通過以下方式使用自定義事件將它們顯式跟踪到 Profiler 中
sp_trace_generateevent
:declare @tracedata varbinary(8000); set @tracedata = cast(@transferdate as varbinary(8000)); exec sp_trace_generateevent 82, N'@transferdate', @tracedata ); set @tracedata = cast(@oldcust_id as varbinary(8000)); exec sp_trace_generateevent 82, N'@oldcust_id', @tracedata);
您需要修改 Profiler 會話以監視使用者User-Configurable Event Class,否則您將看不到生成的事件。
sp_trace_generateevent
調試完成後,我還將註釋掉對生產環境的呼叫。該呼叫不是非常昂貴(特別是如果沒有監聽監聽它),但它應該被刪除。更新
該
exec
呼叫不允許將 CAST 內聯到參數列表中。我修改了程式碼以顯示如何在 exec 之前進行轉換。該值將在BinaryData
列中,以十六進製表示(因此'daf'
將顯示為0x646166
)。