SQL Server存儲(chǔ)過程相信大家都接觸過,下面就教您如何實(shí)現(xiàn)SQL Server存儲(chǔ)過程的單步調(diào)試,希望可以讓您對(duì)SQL Server存儲(chǔ)過程有更深的認(rèn)識(shí)。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供掇刀網(wǎng)站建設(shè)、掇刀做網(wǎng)站、掇刀網(wǎng)站設(shè)計(jì)、掇刀網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、掇刀企業(yè)網(wǎng)站模板建站服務(wù),十余年掇刀做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
1)調(diào)試
在SQL Server的SQL Query Analyzer(查詢分析器)中,打開Object Brower(F8),在左邊的列表中選擇一數(shù)據(jù)庫(kù),展開Stored Procedures,然后選擇要調(diào)試的存儲(chǔ)過程(或任意一個(gè)存儲(chǔ)過程),按右鍵,點(diǎn)擊“Debug”,則彈出Debug Procedure對(duì)話框,顯示該存儲(chǔ)過程的參數(shù)(可在Procedures列表中選擇其他要調(diào)試的存儲(chǔ)過程),為參數(shù)輸入初始值,點(diǎn)擊“Execute”按鈕,進(jìn)入Debug窗口;可使用上面一排按鈕或其對(duì)應(yīng)的快捷鍵對(duì)該存儲(chǔ)過程進(jìn)行“執(zhí)行”“設(shè)斷點(diǎn)”“取消斷點(diǎn)”“單步跟蹤”等操作;窗口下方是參數(shù)列表,第一個(gè)是自定義參數(shù)變量列表,在Debug的過程中顯示全局變量和局部變量的值的變化,可對(duì)參數(shù)列表中該存儲(chǔ)過程的參數(shù)初值進(jìn)行修改,再重新調(diào)試;第二個(gè)列表是系統(tǒng)變量,可自行增加,如添加“@@Error”“@@RowCount”,觀看其值的變化,其值不能手工修改。第三個(gè)列表是CallStack,暫時(shí)不知道怎么用。在參數(shù)列表中,不能直接把User_Name()、GetDate()等函數(shù)直接放到參數(shù)列表中跟蹤,要把它們賦值予自定義變量進(jìn)行查看。
大家可連接Pivot的SQL Server進(jìn)行嘗試,使用本機(jī)DB系統(tǒng)如果不行,則需要用Administrator登錄本機(jī),然后在企業(yè)管理器中,在本機(jī)的SQL Server Registration上點(diǎn)擊右鍵,點(diǎn)“屬性”,選擇“Security”,選擇“This account”,輸入Administrator和密碼,確定之。
2)SQL Server存儲(chǔ)過程單步調(diào)試
具體步驟如下:
1、將服務(wù)器【身份驗(yàn)證】屬性設(shè)置成【混合模式】(window與sql身份驗(yàn)證)
2、在【控制面板】中打開【服務(wù)】將【MSSQLSERVER】服務(wù)打開【屬性】,選擇【登錄】頁(yè)面,將登錄身份設(shè)置成服務(wù)器本地帳號(hào)和該帳號(hào)密碼,如administrator,密碼123;
3、重新啟動(dòng)sqlserver服務(wù),此時(shí)的服務(wù)指的是【SQL服務(wù)管理器】中的SQL SERVER服務(wù);
假設(shè)【帳號(hào)】設(shè)置為administrator
此時(shí)達(dá)到的效果是:服務(wù)器本地帳號(hào)administrator與客戶端上的administrator(并且該帳號(hào)的密碼要與服務(wù)器密碼相同)可以通過【查詢分析器】進(jìn)行調(diào)試;
如果想讓【其他帳號(hào)】也能夠調(diào)試,那么還需要如下設(shè)置:
1、在【服務(wù)器】上運(yùn)行dcomcnfg.exe;
2、在【默認(rèn)安全機(jī)制】中【默認(rèn)訪問權(quán)限】右邊點(diǎn)擊【編輯默認(rèn)值】選擇允許調(diào)試的帳號(hào)類型,如users用戶類型,sample帳號(hào)有包含users組;
3、重新啟動(dòng)sqlserver服務(wù);
3、在客戶端上創(chuàng)建與服務(wù)帳號(hào)密碼一樣的用戶,如sample;
做到這步就可以通過查詢分析器的調(diào)試功能進(jìn)行單步調(diào)試了
解決方法如下:
1,在windows服務(wù)中找到MSSQLSERVER,雙擊彈出對(duì)話框。
2,選擇“登陸”選項(xiàng)卡,選中“此帳戶”,輸入一個(gè)管理員帳戶和密碼。
3,重啟服務(wù)。
4,在查詢分析器執(zhí)行單步調(diào)試,在查詢分析器中,右鍵單擊存儲(chǔ)過程,選擇“調(diào)試”。
打斷點(diǎn),然后選中你的存儲(chǔ)過程,右鍵,調(diào)試,然后輸入?yún)?shù)即可。
sqlserver2008調(diào)試的要求和條件:如果在引擎所在的電腦或服務(wù)器上調(diào)試,則只需要SA或者WINDOWS用戶登陸即可。如果是異地調(diào)試,則需要設(shè)置防火墻例外,增加SSMS和SQLSERVER.EXE為允許,增加135端口允許通過
今天突然有同事問起,如何在sqlserver中調(diào)試存儲(chǔ)過程(我們公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver
2000真的有很大的不同,我真暈了。
于是琢磨了一下。SQLSERVER
2005中不知因何去掉了很重要的DEBUGGER功能,要調(diào)試,必須要安裝VS2005專業(yè)版或者更高版本。非常不方便。
還好,SQLSERVER 2008中這個(gè)很重要而且方便的功能又回來了。
不過,SQLSERVER
2008的調(diào)試功能和SQL2000的方法差別很大。SQL2000是在查詢分析器中的對(duì)象瀏覽器中選中需要調(diào)試的存儲(chǔ)過程,右鍵----調(diào)試---輸入?yún)?shù)開始調(diào)試。
sqlserver2008中則完全不同,變成了必須要在SSMS中EXEC
[PROCEDURE NAME]
@VAR1,@VAR2,然后點(diǎn)綠色三角或者點(diǎn)菜單中的調(diào)試---啟動(dòng)調(diào)試。然后點(diǎn)工具欄的最右邊的單步調(diào)試或者跳出等。下面的變量窗口和堆棧窗口等可以查看調(diào)試中變量等動(dòng)態(tài)變化值。
sqlserver2008調(diào)試的要求和條件:如果在引擎所在的電腦或服務(wù)器上調(diào)試,則只需要SA或者WINDOWS用戶登陸即可。如果是異地調(diào)試,則需要設(shè)置防火墻例外,增加SSMS和SQLSERVER.EXE為允許,增加135端口允許通過。
總之,SQL2008的調(diào)試比2000操作起來麻煩多了,要求也多了。剛開始感覺不如2000的好用,也可能是使用2000習(xí)慣了。習(xí)慣是可怕的,但是微軟是在不斷進(jìn)步的...
一、回顧早期的SQL SERVER版本:
早在SQL Server 2000時(shí)代,查詢分析器的功能還很簡(jiǎn)陋,遠(yuǎn)不如VS那么強(qiáng)大。到SQL Server
2005時(shí)代,代碼高亮、SQL優(yōu)化等功能逐漸加強(qiáng),但是依然無法調(diào)試SQL語(yǔ)句。好一點(diǎn)的第三方的SQL語(yǔ)法編輯器似乎也不夠完美,這樣導(dǎo)致一些人抱怨存儲(chǔ)過程不便于維護(hù),開發(fā)的時(shí)候能不用則不用。
二、SQL Server 2008 Express 智能提示加強(qiáng):
該功能是SQL2008在SQL Server 2005之后的升級(jí)版,我們可以很方便的調(diào)用智能提示,和 VS一致:使用快捷鍵ctrl + J 即可。
截圖如下:
該功能是否與VS一樣了呢? 畢竟他們都是微軟的產(chǎn)品。
三、調(diào)試T-SQL語(yǔ)句:
1.Debug普通T-SQL語(yǔ)句:
SQL代碼如下:
use northwind
go
declare @i int ,@j int,@k int set @i = 1;
set @j = 2; set @k=@i + @j
select @i; go
非常簡(jiǎn)單的定義了 三個(gè)int 型變量:i、j、k并且對(duì)這些變量進(jìn)行簡(jiǎn)單的邏輯運(yùn)算,在Management Studio
中只要輕松的按F11鍵,即可調(diào)試以上代碼塊。
接著點(diǎn)擊F11逐語(yǔ)句debug 或者F10逐過程調(diào)試代碼。
這個(gè)dubug的場(chǎng)面您是否覺得已經(jīng)和VS相差無幾了呢?
四、支持復(fù)雜存儲(chǔ)過程嵌套debug:
您可能會(huì)疑問,在一個(gè)龐大的系統(tǒng)中,如果數(shù)據(jù)庫(kù)邏輯絕大部分都是存儲(chǔ)過程實(shí)現(xiàn)的情況下,會(huì)出現(xiàn)存儲(chǔ)過程嵌套存儲(chǔ)過程或者嵌套存儲(chǔ)函數(shù)這樣的代碼。
SQL2008是否支持調(diào)試功能呢?答案是肯定的。
首先定義一個(gè)簡(jiǎn)單的存儲(chǔ)過程(本文使用NorthWind數(shù)據(jù)庫(kù))代碼如下:
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
該存儲(chǔ)過程在以下批處理內(nèi)被調(diào)用,代碼如下:
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對(duì)以上代碼進(jìn)行SQL Debug。
當(dāng)斷點(diǎn)經(jīng)過exec sp_getOrders 10248 這段代碼時(shí),點(diǎn)擊F11進(jìn)入sp_getOrders存儲(chǔ)過程進(jìn)行逐語(yǔ)句debug。
這樣可以在嵌套的存儲(chǔ)過程或函數(shù)內(nèi)進(jìn)行debug了,此刻不得不承認(rèn): 升級(jí)后的SQL2008越來越強(qiáng)大。您還恐懼使用或者調(diào)試存儲(chǔ)過程么?
剛試了一下在SQL 2008中執(zhí)行一下,自動(dòng)生成的執(zhí)行T-SQL代碼中可以設(shè)置斷點(diǎn),但在存儲(chǔ)過程中設(shè)置的斷點(diǎn)無效,這樣就真成了單步執(zhí)行,不能跳到下一個(gè)斷點(diǎn),而且會(huì)出現(xiàn)執(zhí)行代碼跟光標(biāo)不太對(duì)位的情況。
SQL2005中不能設(shè)置斷點(diǎn),包括自動(dòng)生成的執(zhí)行T-SQL中也不能設(shè)置。
方法如下:
檢查服務(wù)是否啟動(dòng)
1、在SQLServer服務(wù)器中, 打開SQLServer服務(wù)管理器。單擊【開始】-【程序】-【Microsoft SQLServer】-【服務(wù)管理器】菜單命令。
2、打開【SQLServer服務(wù)管理器】,單擊【服務(wù)器】,選擇要檢查的SQLServer的實(shí)例名【abc10-1DA235E90】,單擊【服務(wù)】,選擇【SQLServer】選項(xiàng),如果此時(shí)暫停或者停止按鈕可用,說明服務(wù)已經(jīng)啟動(dòng);否則則沒有啟動(dòng),啟動(dòng)即可。
3、最好在【SQLServer服務(wù)管理器】中將選擇隨系統(tǒng)啟動(dòng)而啟動(dòng)服務(wù)。選擇【當(dāng)啟動(dòng)OS時(shí)自動(dòng)啟動(dòng)服務(wù)】選擇框,完成讓MSSQLSERVER服務(wù)隨操作系統(tǒng)啟動(dòng)而自動(dòng)啟動(dòng)。
4、再次打開SQL Server 數(shù)據(jù)庫(kù),選擇連接數(shù)據(jù)庫(kù)服務(wù)器實(shí)例,可以正常連接打開數(shù)據(jù)庫(kù)了。
5、SQL Server數(shù)據(jù)庫(kù)能正常連接得保證網(wǎng)絡(luò)通暢,操作過程中還需要進(jìn)行網(wǎng)絡(luò)測(cè)試,可以通過PING命令實(shí)現(xiàn)。如下圖所示,表示網(wǎng)絡(luò)通暢。
新聞標(biāo)題:sqlserver打斷點(diǎn),中斷sql執(zhí)行
網(wǎng)站網(wǎng)址:http://chinadenli.net/article14/dsgigde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、用戶體驗(yàn)、微信公眾號(hào)、企業(yè)網(wǎng)站制作、云服務(wù)器、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)