2012-01-15 23 views
3

我有一個非常複雜的T-SQL過程,約2000行(我沒有開發它)。我被要求修復它的一些錯誤。我嘗試了一些方法爲:在SQL Server上調試複雜的T-SQL過程

  • 使用我SQL Server Management Studio
  • 發現使用「打印」的語句來觀察的變量
  • 調試選項的

我的問題:
什麼是最好的方法調試這樣的程序?

+3

從上到下,按部就班的方式審查報表。根據bug,使用Profiler監視實際執行的操作(存儲過程和TSQL)將是一個好主意。 – 2012-01-15 22:05:46

回答

2

除了打印語句之外,您可以在大多數查詢中使用output子句(包括插入,更新&刪除),以便您可以查看中間結果並且不會中斷流程的流程。 Exampls:

delete語句:

delete [tbl] 
output deleted.* 
where [something] = 'stuff'; 

Insert語句:

insert [tbl] 
output inserted.* 
values (42, 'things'); 

Update語句:

update [tb] 
output deleted.*, -- Original values 
     inserted.* -- Updated values 
    set [something] = 'poopen' 
where [id] = 42; 
4

開始通過重構過程分成多個小程序,可以測試調試孤立。