日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

存儲(chǔ)過(guò)程調(diào)試

系統(tǒng) 2361 0

昨天被問(wèn)到sql server中存儲(chǔ)過(guò)程怎么調(diào)試,我曾經(jīng)寫(xiě)存儲(chǔ)過(guò)程,調(diào)試方法非常笨拙,就是逐條運(yùn)行語(yǔ)句,然后查看結(jié)果是不是預(yù)期的,這樣的調(diào)試方法,實(shí)在是無(wú)奈之舉,極大程度地限制了開(kāi)發(fā)速度和準(zhǔn)確性。今天在他的提點(diǎn)下,研究了下SQL SERVER 2008的存儲(chǔ)過(guò)程調(diào)試。

1.在SQL SERVER2008中調(diào)試存儲(chǔ)過(guò)程

下面內(nèi)容引自MSDN

SQL SERVER 2008的SSMS是支持單步debug的,可是在調(diào)試之前必須配置權(quán)限。

假設(shè) SQL Server Management Studio 與 SQL Server 數(shù)據(jù)庫(kù)引擎實(shí)例在同一臺(tái)計(jì)算機(jī)上執(zhí)行,則對(duì)于執(zhí)行 Transact-SQL 調(diào)試器沒(méi)有配置要求??墒?,當(dāng) SQL Server Management Studio 與數(shù)據(jù)庫(kù)引擎實(shí)例在不同計(jì)算機(jī)上執(zhí)行時(shí),若要執(zhí)行 Transact-SQL 調(diào)試器,則必須在兩臺(tái)計(jì)算機(jī)上使用 “Windows 防火墻” 控制面板應(yīng)用程序來(lái)啟用程序和port例外。

在執(zhí)行數(shù)據(jù)庫(kù)引擎實(shí)例的計(jì)算機(jī)上,在 “Windows 防火墻” 中指定下面信息:

  • 將 TCP port 135 加入到例外列表。

  • 將程序 sqlservr.exe 加入到例外列表。默認(rèn)情況下,sqlservr.exe 安裝在 C:\Program Files\Microsoft SQL Server\MSSQL10. 實(shí)例名稱(chēng) \MSSQL\Binn 下,當(dāng)中, 實(shí)例名稱(chēng) 對(duì)于默認(rèn)實(shí)例為 MSSQLSERVER,對(duì)于不論什么指定的實(shí)例則為對(duì)應(yīng)實(shí)例的名稱(chēng)。

  • 假設(shè)域策略要求通過(guò) IPSec 進(jìn)行網(wǎng)絡(luò)通信,還必須將 UDP port 4500 和 UDP port 500 加入到例外列表。

在執(zhí)行 SQL Server Management Studio 的計(jì)算機(jī)上,在 “Windows 防火墻” 中指定下面信息:

  • 將 TCP port 135 加入到例外列表。

  • 將程序 ssms.exe (SQL Server Management Studio) 加入到例外列表。默認(rèn)情況下,ssms.exe 安裝在 C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE 下。

  • 啟動(dòng) Transact-SQL 調(diào)試器的要求例如以下:

    • SQL Server Management Studio 必須在作為 sysadmin 固定server角色成員的 Windows 帳戶下執(zhí)行。

    • 數(shù)據(jù)庫(kù)引擎查詢編輯器窗體必須使用 Windows 身份驗(yàn)證來(lái)連接,或使用作為 sysadmin 固定server角色成員的 SQL Server 身份驗(yàn)證登錄名來(lái)連接。

    • 數(shù)據(jù)庫(kù)引擎查詢編輯器窗體必須連接到 SQL Server 2008數(shù)據(jù)庫(kù)引擎的實(shí)例。假設(shè)查詢編輯器窗體連接到處于單用戶模式下的實(shí)例,您將無(wú)法執(zhí)行調(diào)試器。

    我們建議在測(cè)試server上調(diào)試 Transact-SQL 代碼,而不要在生產(chǎn)server上調(diào)試,原因例如以下:

    • 調(diào)試是一項(xiàng)須要高特權(quán)的操作。因此僅僅同意 sysadmin 固定server角色成員在 SQL Server 中進(jìn)行調(diào)試。

    • 當(dāng)您調(diào)查多個(gè) Transact-SQL 語(yǔ)句的執(zhí)行時(shí),調(diào)試會(huì)話一般會(huì)執(zhí)行非常長(zhǎng)時(shí)間。會(huì)話獲取的鎖(如更新鎖)可能會(huì)持有非常長(zhǎng)時(shí)間,直到終止會(huì)話或者提交或回滾事務(wù)。

    啟動(dòng) Transact-SQL 調(diào)試器可將查詢編輯器窗體置于調(diào)試模式。在查詢編輯器窗體進(jìn)入調(diào)試模式時(shí),調(diào)試器會(huì)在第一個(gè)代碼行處暫停。然后,您能夠單步運(yùn)行代碼,在特定 Transact-SQL 語(yǔ)句上暫停運(yùn)行,并使用調(diào)試器窗體來(lái)查看當(dāng)前運(yùn)行狀態(tài)。能夠通過(guò)在 “查詢” 工具欄上單擊 “調(diào)試” button,或在 “調(diào)試” 菜單上單擊 “啟動(dòng)調(diào)試” 來(lái)啟動(dòng)調(diào)試器。

    查詢編輯器窗體會(huì)保持在調(diào)試模式下,直到查詢編輯器窗體中的最后一個(gè)語(yǔ)句完畢或您停止調(diào)試模式。能夠使用下面不論什么一種方法來(lái)停止調(diào)試模式和語(yǔ)句運(yùn)行:

    • “調(diào)試” 菜單中,單擊 “停止調(diào)試”

    • “調(diào)試” 工具欄上,單擊 “停止調(diào)試” button。

    • “查詢” 菜單上,單擊 “取消運(yùn)行查詢” 。

    • “查詢” 工具欄上,單擊 “取消運(yùn)行查詢” button。

    也可在 “調(diào)試” 菜單上單擊 “所有分離” ,以停止調(diào)試模式,但同意剩余的 Transact-SQL 語(yǔ)句完畢運(yùn)行。

原文 http://msdn.microsoft.com/zh-cn/library/cc646024(v=SQL.100).aspx

2.在Visual Studio中調(diào)試存儲(chǔ)過(guò)程(以VS2010為例)

打開(kāi)server資源管理器,加入一個(gè)SQL SERVER 2008數(shù)據(jù)庫(kù)連接,然后在存儲(chǔ)過(guò)程節(jié)點(diǎn)上點(diǎn)右鍵,選擇“單步運(yùn)行存儲(chǔ)過(guò)程”,就可以進(jìn)入單步調(diào)試狀態(tài),同上邊過(guò)程,也要設(shè)置權(quán)限。




?? 大家一定在編寫(xiě)或分析一個(gè)復(fù)雜存錯(cuò)過(guò)程時(shí),非常希望能想VB代碼一樣進(jìn)行調(diào)試,可惜SQL Server本身并沒(méi)有提供調(diào)試器,我們能夠利用VS來(lái)進(jìn)行調(diào)試。

?? 我寫(xiě)了一個(gè)簡(jiǎn)單的存儲(chǔ)過(guò)程,介紹一下用VS調(diào)試存儲(chǔ)過(guò)程的步驟。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Create PROCEDURE testProcDebugger
???? @id int
AS
BEGIN
???? declare @testVal1 int
???? set @testVal1=@id
???? declare @empid varchar
???? declare @shipperid varchar
? ?
???? select @empid=shipperid,@shipperid=empid from orders
???? where orderid=@testVal1
? ?
???? select @empid,@shipperid
END

?

?

第一步:?jiǎn)?dòng)Visual Studio,點(diǎn)“試圖”->“服務(wù)資源管理器”

存儲(chǔ)過(guò)程調(diào)試

?

第二步:加入數(shù)據(jù)連接。
?? ?
填寫(xiě)好數(shù)據(jù)庫(kù)名、登錄賬號(hào)、和要連接的數(shù)據(jù)庫(kù),點(diǎn)確定。
?
第三步:在要調(diào)試的存錯(cuò)過(guò)程上右鍵,選擇“單步運(yùn)行存儲(chǔ)過(guò)程”
?? ??
第四步:這時(shí)調(diào)試器會(huì)依據(jù)存儲(chǔ)過(guò)程的參數(shù),提示你輸入幾個(gè)用于條數(shù)的值,然后點(diǎn)確定就能夠進(jìn)入調(diào)試狀態(tài)了。
?? ? ?
如今大家就能夠像調(diào)試VB代碼一樣,進(jìn)行一步一步的跟蹤了。

第二步:加入數(shù)據(jù)連接。

存儲(chǔ)過(guò)程調(diào)試

?

填寫(xiě)好數(shù)據(jù)庫(kù)名、登錄賬號(hào)、和要連接的數(shù)據(jù)庫(kù),點(diǎn)確定。
?
第三步:在要調(diào)試的存錯(cuò)過(guò)程上右鍵,選擇“單步運(yùn)行存儲(chǔ)過(guò)程”

存儲(chǔ)過(guò)程調(diào)試

??
第四步:這時(shí)調(diào)試器會(huì)依據(jù)存儲(chǔ)過(guò)程的參數(shù),提示你輸入幾個(gè)用于條數(shù)的值,然后點(diǎn)確定就能夠進(jìn)入調(diào)試狀態(tài)了。
存儲(chǔ)過(guò)程調(diào)試

?
如今大家就能夠像調(diào)試VB代碼一樣,進(jìn)行一步一步的跟蹤了。

存儲(chǔ)過(guò)程調(diào)試



存儲(chǔ)過(guò)程調(diào)試


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 龙南县| 舞阳县| 达州市| 东乡| 黎平县| 视频| 临沭县| 仙桃市| 连江县| 霍邱县| 根河市| 澎湖县| 威远县| 玉环县| 镇江市| 大荔县| 商城县| 迭部县| 南召县| 思南县| 邹城市| 鄂托克旗| 建水县| 四子王旗| 衡山县| 若尔盖县| 柳河县| 赣州市| 永平县| 大姚县| 彝良县| 洛川县| 镇雄县| 徐闻县| 拉萨市| 新野县| 尚志市| 甘肃省| 攀枝花市| 遵义市| 济源市|