程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL2008 >> 若何在SQL Server 2008下輕松調試T-SQL語句和存儲進程

若何在SQL Server 2008下輕松調試T-SQL語句和存儲進程

編輯:MSSQL2008

若何在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愈來愈壯大。您還恐怖應用或許調試存儲進程麼?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved