SQLSERVER2005調試存儲過程跟函數
以前一直用Toad for SqlServer 和Database.Net 來調試SQL2005的存儲過程跟函數
Toad for SqlServer介紹以及下載:toad for sqlserver5.7
Database.Net 介紹以及下載:Database .NET 8.0 發布,數據庫管理工具
今日發現原來上面兩個工具的功能,微軟的Visual Studio也可以做到
本來微軟自家的Visual Studio就支持調試SQLSERVER的存儲過程跟函數,我竟然用了第三方工具,而且這些第三方工具也不是很好用
微軟在SQLSERVER Management Studio2008里才集成了TSQL調試功能,那么SQL2005只有用VS來調試了
幸虧VS調試TSQL也不是很復雜
我的環境:VS2008 TeamSystem , SQL2005 個人開發版 , Windows7 Ultimate
我使用的工具還是比較落后
step1:打開Visual Studio2008,然后點擊菜單 視圖-》服務器資源管理器
最好以管理員身份登錄操作系統,打開VS的時候一般就以管理員的身份運行了
step2:在數據連接那里 右鍵-》添加連接
step3:數據源那里選擇SQLSERVER就可以了
step4:選擇你本地的數據庫不要選擇局域網或者廣域網里的數據庫,因為Windows安全問題的原因你是調試不了的只能執行
joe是我的筆記本電腦的計算機名,joe-homepc是局域網里另一台計算機的計算機名
選擇好了之后點擊“測試連接” ,沒有問題就可以點擊“確定”按鈕了
step5:打開存儲過程或者函數的樹節點,然后找一個存儲過程或者函數進行調試
step6:調試函數,調試的時候無論是存儲過程還是函數,都會直接跳過變量定義部分進入函數或存儲過程主體來執行
只有當TSQL語句運行的時候才會中斷到斷點的地方
step7:調試存儲過程
當你調試遠程SQL服務器的時候,VS就會報錯,就像你寫C#的時候是調試不了遠程電腦上的代碼的
不過個人覺得調試如果能看到表數據就最好了,調試的時候varchar nvarchar int datetime這些數據都可以看到
但是表的內容,無論是臨時表,表變量,表都是無法看到數據的,如果你想查看中途我插入到@temp表變量里的數據是看不到的
包括Toad for SqlServer 這些工具也是沒辦法看到的,個人覺得這是一個缺點
最后給大家一個函數,這個函數的作用就是切割字符串,大家可以用來調試一下
1 CREATE FUNCTION [dbo].[SplitString] (@string varchar(6000)) 2 RETURNS @temp TABLE(substr varchar(30)) 3 AS 4 begin 5 -- 用法 select * from SplitString('1, 2, 3') 6 7 declare @str varchar(6000) 8 declare @i int 9 10 set @i=0 11 while(@i<len(@string)) 12 begin 13 if(substring(@string,@i,1)=',') 14 begin 15 select @str=substring(@string,1,@i-1) 16 set @string=substring(@string,@i+1,len(@string)) 17 set @i=1 18 insert into @temp values(ltrim(@str)) 19 20 end 21 else 22 begin 23 set @i=@i+1 24 end 25 end 26 27 insert into @temp values(ltrim(@string)) 28 29 RETURN 30 end