存储过程调试
昨天被問到sql server中存儲過程怎么調試,我曾經寫存儲過程,調試方法非常笨拙,就是逐條運行語句,然后查看結果是不是預期的,這樣的調試方法,實在是無奈之舉,極大程度地限制了開發速度和準確性。今天在他的提點下,研究了下SQL SERVER 2008的存儲過程調試。
1.在SQL SERVER2008中調試存儲過程
下面內容引自MSDN
SQL SERVER 2008的SSMS是支持單步debug的,可是在調試之前必須配置權限。
假設 SQL Server Management Studio 與 SQL Server 數據庫引擎實例在同一臺計算機上執行,則對于執行 Transact-SQL 調試器沒有配置要求。可是,當 SQL Server Management Studio 與數據庫引擎實例在不同計算機上執行時,若要執行 Transact-SQL 調試器,則必須在兩臺計算機上使用“Windows 防火墻”控制面板應用程序來啟用程序和port例外。
在執行數據庫引擎實例的計算機上,在“Windows 防火墻”中指定下面信息:
-
將 TCP port 135 加入�到例外列表。
-
將程序 sqlservr.exe 加入�到例外列表。默認情況下,sqlservr.exe 安裝在 C:\Program Files\Microsoft SQL Server\MSSQL10.實例名稱\MSSQL\Binn 下,當中,實例名稱對于默認實例為 MSSQLSERVER,對于不論什么指定的實例則為對應實例的名稱。
-
假設域策略要求通過 IPSec 進行網絡通信,還必須將 UDP port 4500 和 UDP port 500 加入�到例外列表。
在執行 SQL Server Management Studio 的計算機上,在“Windows 防火墻”中指定下面信息:
-
將 TCP port 135 加入�到例外列表。
-
將程序 ssms.exe (SQL Server Management Studio) 加入�到例外列表。默認情況下,ssms.exe 安裝在 C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE 下。
-
啟動 Transact-SQL 調試器的要求例如以下:
-
SQL Server Management Studio 必須在作為 sysadmin 固定server角色成員的 Windows 帳戶下執行。
-
數據庫引擎查詢編輯器窗體必須使用 Windows 身份驗證來連接,或使用作為 sysadmin 固定server角色成員的 SQL Server 身份驗證登錄名來連接。
-
數據庫引擎查詢編輯器窗體必須連接到 SQL Server 2008數據庫引擎的實例。假設查詢編輯器窗體連接到處于單用戶模式下的實例,您將無法執行調試器。
我們建議在測試server上調試 Transact-SQL 代碼,而不要在生產server上調試,原因例如以下:
-
調試是一項須要高特權的操作。因此僅僅同意 sysadmin 固定server角色成員在 SQL Server 中進行調試。
-
當您調查多個 Transact-SQL 語句的執行時,調試會話一般會執行非常長時間。會話獲取的鎖(如更新鎖)可能會持有非常長時間,直到終止會話或者提交或回滾事務。
啟動 Transact-SQL 調試器可將查詢編輯器窗體置于調試模式。在查詢編輯器窗體進入調試模式時,調試器會在第一個代碼行處暫停。然后,您能夠單步運行代碼,在特定 Transact-SQL 語句上暫停運行,并使用調試器窗體來查看當前運行狀態。能夠通過在“查詢”工具欄上單擊“調試”button,或在“調試”菜單上單擊“啟動調試”來啟動調試器。
查詢編輯器窗體會保持在調試模式下,直到查詢編輯器窗體中的最后一個語句完畢或您停止調試模式。能夠使用下面不論什么一種方法來停止調試模式和語句運行:
-
在“調試”菜單中,單擊“停止調試”。
-
在“調試”工具欄上,單擊“停止調試”button。
-
在“查詢”菜單上,單擊“取消運行查詢”。
-
在“查詢”工具欄上,單擊“取消運行查詢”button。
也可在“調試”菜單上單擊“所有分離”,以停止調試模式,但同意剩余的 Transact-SQL 語句完畢運行。
-
原文http://msdn.microsoft.com/zh-cn/library/cc646024(v=SQL.100).aspx
2.在Visual Studio中調試存儲過程(以VS2010為例)
打開server資源管理器,加入�一個SQL SERVER 2008數據庫連接,然后在存儲過程節點上點右鍵,選擇“單步運行存儲過程”,就可以進入單步調試狀態,同上邊過程,也要設置權限。
利用VS調試存儲過程
?? 大家一定在編寫或分析一個復雜存錯過程時,非常希望能想VB代碼一樣進行調試,可惜SQL Server本身并沒有提供調試器,我們能夠利用VS來進行調試。
?? 我寫了一個簡單的存儲過程,介紹一下用VS調試存儲過程的步驟。
?
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Create PROCEDURE testProcDebugger ????@id int AS BEGIN ????declare @testVal1 int ????set @testVal1=@id ????declare @empid varchar ????declare @shipperid varchar ?? ????select @empid=shipperid,@shipperid=empid from orders ????where orderid=@testVal1 ?? ????select @empid,@shipperid END |
?
?
第一步:啟動Visual Studio,點“試圖”->“服務資源管理器”
?
第二步:加入�數據連接。 填寫好數據庫名、登錄賬號、和要連接的數據庫,點確定。 第三步:在要調試的存錯過程上右鍵,選擇“單步運行存儲過程” 第四步:這時調試器會依據存儲過程的參數,提示你輸入幾個用于條數的值,然后點確定就能夠進入調試狀態了。 如今大家就能夠像調試VB代碼一樣,進行一步一步的跟蹤了。第二步:加入�數據連接。
?
填寫好數據庫名、登錄賬號、和要連接的數據庫,點確定。
?
第三步:在要調試的存錯過程上右鍵,選擇“單步運行存儲過程”
??
第四步:這時調試器會依據存儲過程的參數,提示你輸入幾個用于條數的值,然后點確定就能夠進入調試狀態了。
?
如今大家就能夠像調試VB代碼一樣,進行一步一步的跟蹤了。
轉載于:https://www.cnblogs.com/hrhguanli/p/4085757.html
總結
- 上一篇: (原)Eclipse中将JNI生成的so
- 下一篇: 有关dwr推送的笔记