SQLSERVER2005除錯儲存過程跟函式

2022-01-11 20:34:48 字數 3043 閱讀 6702

以前一直用toad for sqlserverdatabase.net來除錯sql2005的儲存過程跟函式

今日發現原來上面兩個工具的功能,微軟的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

as4begin5--

用法 select * from splitstring('1, 2, 3')67

declare

@str

varchar(6000)8

declare

@iint910

set@i=0

11while(@i

<

len(@string

))12

begin

13if(substring(@string,@i,1)=',

')14begin

15select

@str

=substring(@string,1,@i-1

)16set@string

=substring(@string,@i

+1,len(@string

))17

set@i=1

18insert

into

@temp

values(ltrim(@str

))19

20end

21else

22begin

23set@i=

@i+124

end25

end26

27insert

into

@temp

values(ltrim(@string

))28

29return

30end

SQL Server2005複製實現

一 準備工作 1 在發布伺服器上建立乙個共享目錄,作為發布快照檔案的存放目錄。例如 在d 盤根目錄下建資料夾名為pub 2 設定sql 發布伺服器和訂閱伺服器均設定 步驟 開啟服務 控制面板 管理工具 服務 右擊sqlserver agent 屬性 登入 選擇 此帳戶 輸入或選擇第一步中建立的win...

SQL Server 2005完全解除安裝

sql server 2005的解除安裝是乙個非常頭疼的問題。我曾經嘗試過直接使用 新增或刪除程式 工具解除安裝 清除安裝目錄 刪除登錄檔內容等等各種方式綜合解除安裝,勉強成功。現在終於找到了乙個事半功倍的方法,多次嘗試,未有失敗,具體如下 第一種是微軟官方提供的工具 msicuu2.exe 微軟官...

SQLSERVER 2005 遞迴查詢

專案中有使用者組表usergroup如下 其中pid表示當前組的上級組 表資料如下 現在想查詢出頂級組 沒有上級組叫頂級組 a1組的所有子孫組id,sql如下 查詢子節點 with rtd1 as select id pid from usergroup rtd2 as select from rt...