淺析如何調(diào)試SQL CLR存儲過程
本文筆者用簡練的語言對SQL CLR存儲過程的原理與方法對進行講解,筆者列出了其中的注意事項。請大家仔細閱讀。
調(diào)試SQL CLR存儲過程,在一個新的 SQL Server 項目中,建立一個到 AdventureWorks 示例數(shù)據(jù)庫的連接。
使用下面第一個示例部分中的代碼創(chuàng)建一個新的SQL CLR存儲過程,并將其命名為“InsertCurrency.cs”。有關(guān)更多信息,請參見如何:使用 SQL Server 項目類型進行開發(fā)。
添加一個通過調(diào)用該SQL CLR存儲過程來測試它的腳本。在“解決方案資源管理器”中,右擊“TestScripts”目錄,單擊“添加測試腳本”,然后插入下面的第二個示例部分中的代碼。以名稱“InsertCurrency.sql”保存文件。右擊該文件名,然后單擊“設(shè)置為默認調(diào)試腳本”。
在 InsertCurrency.cs 中設(shè)置斷點,然后在“調(diào)試”菜單上單擊“啟動”以對該項目進行編譯、部署和單元測試。以黃色箭頭表示的說明性指針在斷點上顯示時,說明正在調(diào)試存儲過程。嘗試不同的調(diào)試功能。
打開“局部變量”窗口,并在“調(diào)試”菜單上單擊“單步執(zhí)行”以單步執(zhí)行SQL CLR存儲過程中的一行。注意,“局部變量”窗口中的變量 @mynvarchar 的值已經(jīng)更改,并且它的值現(xiàn)在顯示為紅色,表示它已經(jīng)更改。有關(guān)更多信息,請參見 使用“局部變量”窗口。
注意
服務(wù)器可能不會反映在調(diào)試器窗口中對變量值的更改。
打開“監(jiān)視”窗口。在“文本編輯器”中,拖動 InsertCurrencyCommand 變量到“監(jiān)視”窗口中的任意位置。
該變量隨即添加到受監(jiān)視的變量列表中。有關(guān)更多信息,請參見如何:使用調(diào)試器變量窗口。
注意 也可以在“監(jiān)視”窗口中編輯變量的值。
在文本編輯器中,右擊 InsertCurrencyCommand.ExecuteNonQuery 行并在快捷菜單上單擊“插入斷點”。
在“調(diào)試”菜單中單擊“繼續(xù)”,調(diào)試器將運行代碼直到新的斷點。
再次單擊“繼續(xù)”完成對存儲過程的調(diào)試。
“輸出”窗口會顯示一條消息,表明已成功部署SQL CLR存儲過程,并會顯示執(zhí)行 InsertCurrency.sql 文件中的命令的結(jié)果。
示例
用此代碼替換SQL CLR存儲過程模板。
- using System;
 - using System.Data;
 - using System.Data.Sql;
 - using System.Data.SqlServer;
 - using System.Data.SqlTypes;
 - public partial class StoredProcedures
 - {
 - [SqlProcedure]
 - public static void InsertCurrency(SqlString currencyCode,
 - SqlString name)
 - {
 - using(SqlConnection conn = new SqlConnection
 - ("context connection=true")) {
 - SqlCommand cmd = new SqlCommand([your SQL statement], conn);
 - }
 - InsertCurrencyCommand.CommandText = "insert Sales.Currency"
 - + " (CurrencyCode, Name, ModifiedDate) values('"
 - + currencyCode.ToString() + "', '"
 - + name.ToString() + "', '"
 - + DateTime.Now.ToString() + "')";
 - InsertCurrencyCommand.ExecuteNonQuery();
 - }
 - }
 
這是用于執(zhí)行SQL CLR存儲過程的測試腳本。
- - Delete any row that might exist with a key value
 - - that matches the one we are going to insert
 - DELETE Sales.Curr
 - ency
 - WHERE CurrencyCode = 'eee'
 - EXEC InsertCurrency 'eee', 'MyCurr4'
 - SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'
 
【編輯推薦】















 
 
 
 
 
 
 