若何在SQL Server 2008下輕松調試T-SQL語句和存儲進程。本站提示廣大學習愛好者:(若何在SQL Server 2008下輕松調試T-SQL語句和存儲進程)文章只能為提供參考,不一定能成為您想要的結果。以下是若何在SQL Server 2008下輕松調試T-SQL語句和存儲進程正文
明天忽然有同事問起,若何在sqlserver中調試存儲進程(我們公司應用的是sqlserver 2008 R2),猛地一看,和之前應用sqlserver 2000真的有很年夜的分歧,我真暈了。
因而揣摩了一下。SQLSERVER 2005中不知因何去失落了很主要的DEBUGGER功效,要調試,必需要裝置VS2005專業版或許更高版本。異常不便利。
還好,SQLSERVER 2008中這個很主要並且便利的功效又回來了。
不外,SQLSERVER 2008的調試功效和SQL2000的辦法差異很年夜。SQL2000是在查詢剖析器中的對象閱讀器當選中須要調試的存儲進程,右鍵----調試---輸出參數開端調試。
sqlserver2008中則完整分歧,釀成了必需要在SSMS中EXEC [PROCEDURE NAME] @VAR1,@VAR2,然後點綠色三角或許點菜單中的調試---啟動調試。然後點對象欄的最左邊的單步驟試或許跳出等。上面的變量窗口和客棧窗口等可以檢查調試中變量等靜態變更值。sqlserver2008調試的請求和前提:假如在引擎地點的電腦或辦事器上調試,則只須要SA或許WINDOWS用戶上岸便可。假如是異地調試,則須要設置防火牆破例,增長SSMS和SQLSERVER.EXE為許可,增長135端口許可經由過程。
總之,SQL2008的調試比2000操作起來費事多了,請求也多了。剛開端感到不如2000的好用,也能夠是應用2000習氣了。習氣是恐怖的,然則微軟是在赓續提高的...
1、回想晚期的SQL SERVER版本:
早在SQL Server 2000時期,查詢剖析器的功效還很粗陋,遠不如VS那末壯大。到SQL Server 2005時期,代碼高亮、SQL優化等功效逐步增強,然則仍然沒法調試SQL語句。好一點的第三方的SQL語法編纂器仿佛也不敷完善,如許招致一些人埋怨存儲進程未便於保護,開辟的時刻能不消則不消。
2、SQL Server 2008 Express 智能提醒增強:
該功效是SQL2008在SQL Server 2005以後的進級版,我們可以很便利的挪用智能提醒,和 VS分歧:應用快捷鍵ctrl + J 便可。
截圖以下:
該功效能否與VS一樣了呢? 究竟他們都是微軟的產物。
3、調試T-SQL語句:
1.Debug通俗T-SQL語句:
SQL代碼以下:
use northwind go
declare @i int ,@j int,@k int set @i = 1;
set @j = 2; set @k=@i + @j
select @i; go
異常簡略的界說了 三個int 型變量:i、j、k而且對這些變量停止簡略的邏輯運算,在Management Studio 中只需輕松的按F11鍵,便可調試以上代碼塊。
截圖以下:
接著點擊F11逐語句debug 或許F10逐進程調試代碼。
截圖以下:
這個dubug的排場您能否認為曾經和VS相差無幾了呢?
4、支撐龐雜存儲進程嵌套debug:
您能夠會疑問,在一個宏大的體系中,假如數據庫邏輯絕年夜部門都是存儲進程完成的情形下,會湧現存儲進程嵌套存儲進程或許嵌套存儲函數如許的代碼。
SQL2008能否支撐調試功效呢?謎底是確定的。
起首界說一個簡略的存儲進程(本文應用NorthWind數據庫)代碼以下:
CREATE procedure sp_getOrders @orderID int = null
as if (@orderID is null )
begin print 'null'
end else
begin print 'correct'
end select * from Orders whereOrderID = @orderID
go
該存儲進程在以下批處置內被挪用,代碼以下:
declare @i int ,@j int,@k int set @i = 1;
set @j = 2; select @k=@i + @j
exec sp_getOrders 10248 select @i;
go
F11對以上代碼停止SQL Debug。
截圖以下:
當斷點經由exec sp_getOrders 10248 這段代碼時,點擊F11進入sp_getOrders存儲進程停止逐語句debug。
截圖以下:
如許可以在嵌套的存儲進程或函數內停止debug了,此刻不能不認可: 進級後的SQL2008愈來愈壯大。您還恐怖應用或許調試存儲進程麼?