我有一個非常複雜的T-SQL過程,約2000行(我沒有開發它)。我被要求修復它的一些錯誤。我嘗試了一些方法爲:在SQL Server上調試複雜的T-SQL過程
- 使用我
SQL Server Management Studio
- 發現使用「打印」的語句來觀察的變量 調試選項的
我的問題:
什麼是最好的方法調試這樣的程序?
我有一個非常複雜的T-SQL過程,約2000行(我沒有開發它)。我被要求修復它的一些錯誤。我嘗試了一些方法爲:在SQL Server上調試複雜的T-SQL過程
SQL Server Management Studio
我的問題:
什麼是最好的方法調試這樣的程序?
除了打印語句之外,您可以在大多數查詢中使用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;
開始通過重構過程分成多個小程序,可以測試調試孤立。
在SQL Server 2008中,我們可以使用「調試>>開始調試」。對於以前的版本我已經使用Visual Studio - http://msdn.microsoft.com/en-us/library/yet1b7by(VS.80).aspx
。利用SQL事件探查器
PRINT語句的(由具有參數來確定要打印或不)
這些都是僅在非PROD環境中使用和測試。
從上到下,按部就班的方式審查報表。根據bug,使用Profiler監視實際執行的操作(存儲過程和TSQL)將是一個好主意。 – 2012-01-15 22:05:46