天天看點

SQL Server 2005與IBM DB2 v8.2之對比——Visual Studio和.NET開發人員的資料庫平台(三)

首先,在“Add New Item”對話框裡的Templates清單中,選擇Stored Procedure選項,然後在接近螢幕底部的“Name”文本框中為這個存儲過程設定名稱。圖10中的結果顯示了這個存儲過程被命名為“usp_ReadTextFile”。點選“Add”按鈕,Visual Studio 2005就會為這個存儲過程添加一個新的類到你的項目中。圖11中顯示了自動生成的類檔案的名稱和你先前設定的存儲過程名稱一樣,在這個自動生成的類檔案中包含了所有必需的using語句以及建構存儲過程的基本代碼。預設情況下,類名稱被設定為“StoredProcedures”并且usp_ReadTextFile方法的基本結構也已建構,附加在它之前的是前面提到過的[SqlProcedure]屬性。當然,這些設定的最終結果還是取決于你。

SQL Server 2005與IBM DB2 v8.2之對比——Visual Studio和.NET開發人員的資料庫平台(三)

圖11——自動生成的SQL Server存儲過程類

在你完成了存儲過程的編碼工作之後,你可以像生成其他任何C#項目一樣來編譯這個存儲過程項目——選擇Visual Studio的“Build”菜單中的“Build Solution”(圖12)。

SQL Server 2005與IBM DB2 v8.2之對比——Visual Studio和.NET開發人員的資料庫平台(三)

圖12——生成SQL Server CLR存儲過程

生成這個項目的結果是在本地機器上編譯得到一個程式集。在這個範例中,這樣的程式集名為usp_ReadTextFile.DLL。這個時候,你就可以部署這個項目了,方法是點選“Build”菜單中的“Deploy Solution”菜單項,這樣,這個存儲過程就被建構到SQL Server系統中了。

SQL Server 2005與IBM DB2 v8.2之對比——Visual Studio和.NET開發人員的資料庫平台(三)

圖13——部署存儲過程DLL到SQL Server中

當你部署項目的時候,Visual Studio會拷貝自動生成的程式集到相應的資料庫中,這裡的資料庫就是你前面在“Connection”對話框中所選擇的SQL Server資料庫。實際上,在背景,它還是先通過執行CREATE ASSEMBLY和CREATE PROCEDURE語句來拷貝usp_ReadTextFile.DLL程式集到sys.assemblies表中,然後使用這個程式集來建立usp_ReadTextFile存儲過程。

SQL Server 2005與IBM DB2 v8.2之對比——Visual Studio和.NET開發人員的資料庫平台(三)

圖14——部署中的狀态

在Visual Studio IDE的輸出視窗裡顯示了整個部署過程的即時狀态。如果源代碼做了任何修改,在将程式集部署到SQL Server資料庫之前Visual Studio會自動地進行重編譯。如果部署成功,在Visual Studio的狀态條上會顯示“Deploy succeeded”消息。

在将CLR存儲過程部署到SQL Server之後,Visual Studio中內建的功能允許你在Visual Studio IDE中調試這個過程。在調試CLR存儲過程之前,你得先打開“Server Explorer”,然後右擊在項目剛剛建立的時候生成的Data Connection,在彈出的菜單中選擇“Allow SQL/CLR Debugging option”。接下來,你可以在.NET源代碼中設定斷點并按F5或點選綠色的Run箭頭圖示來進行調試。針對于這個存儲過程的測試腳本會運作并且整個存儲過程的執行會如圖15所示的那樣在斷點處停止。

SQL Server 2005與IBM DB2 v8.2之對比——Visual Studio和.NET開發人員的資料庫平台(三)

圖15——調試SQL Server CLR存儲過程

在調試器中,你可以像調試一般的Windows應用程式一樣來顯示和更改變量的值,并且可以在CLR和SQL代碼之間單步執行。這種內建的緊密程度,也就是在SQL和.NET代碼之間單步執行,在DB2 UDB 8.2平台上是沒有的。