萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> 使用 SQL Server 2005中的 CLR 集成

使用 SQL Server 2005中的 CLR 集成

Balaji Rathakrishnan
Christian Kleinerman
Brad Richards
RaMachandran Venkatesh
Vineet RaoiTbulo . c omVnOrcRQ

簡介 簡介 CLR 集成概述 CLR 集成概述 CLR 與 TransacT-SQL CLR 與 TransacT-SQL 代碼位置:數據庫與中間層 代碼位置:數據庫與中間層 處理常見數據庫編程任務和問題 處理常見數據庫編程任務和問題 用戶定義的類型 (UDT) 用戶定義的類型 (UDT) 小結 小結 版權 版權 iTbulo . c omVnOrcRQ

簡介

Microsoft 通過宿主 Microsoft .NET Framework 2.0 公共語言運行庫 (CLR),sql server 2005顯著地增強了數據庫編程模型的功能。它支持用任何 CLR 語言(特別是 Microsoft Visual C# .NET、Microsoft Visual Basic .NET 和 Microsoft Visual C++)編寫過程、觸發器和函數。同時,它還提供了擴展數據庫系統中的類型系統和聚合函數的功能,方法是允許應用程序創建它們自己的數據類型和聚合函數。 iTbulo . c omVnOrcRQ

本白皮書從數據庫應用程序開發人員的角度描述了如何最有效地利用這項技術。它還將 CLR 與 SQL Server 中支持的現有編程語言(即 TransacT-SQL (T-SQL) 和擴展存儲過程 (XP))進行了比較。本白皮書不打算提供這些功能的基本參考資料,SQL Server 2005 Beta 2 Books Online 對其進行了詳細介紹。 iTbulo . c omVnOrcRQ

本白皮書的目標讀者包括數據庫應用程序開發人員、架構師和數據庫管理員。本白皮書假設讀者熟悉基於 .NET Framework 的編程和數據庫編程。 iTbulo . c omVnOrcRQ

返回頁首返回頁首

CLR 集成概述

下面簡要概述了 CLR 集成執行的 SQL Server 功能,以及 Visual Studio 2005 最終發布版本如何支持這些功能。 iTbulo . c omVnOrcRQ

注冊和執行數據庫中的托管代碼包括以下步驟: iTbulo . c omVnOrcRQ

開發人員將托管程序編寫為一組類定義。將 SQL Server 內旨在用作存儲過程、函數或觸發器(下面統稱為例程)的代碼編寫為類的 static(或 Microsoft Visual Basic .NET 中的 shared)方法。將旨在用作用戶定義的類型和聚合的代碼編寫為一個整類。開發人員編譯該程序並創建一個程序集iTbulo . c omVnOrcRQ

然後,將此程序集上載到 SQL Server 數據庫,在其中使用 CREATE ASSEMBLY 數據定義語言 (DDL) 將它存儲到系統目錄。 iTbulo . c omVnOrcRQ

接著,創建 TransacT-SQL 對象,例如,例程(函數、過程和觸發器)、類型和聚合,並將其綁定到已經上載的程序集中的入口點(對例程來說是方法,對類型和聚合來說是類)。使用 CREATE PROCEDURE/FUNCTION/ TRIGGER/TYPE/AGGREGATE 語句來完成這一步。 iTbulo . c omVnOrcRQ

在創建了這些例程之後,應用程序就可以像使用 T-SQL 例程一樣使用它們。例如,可以從 T-SQL 查詢中調用 CLR 函數,從客戶端應用程序或從 T-SQL 批處理中調用 CLR 過程,就好像它們是 T-SQL 過程一樣。 iTbulo . c omVnOrcRQ

Visual Studio 2005 Beta 1 支持在 SQL Server 2005 中開發、部署和調試托管代碼。有一種新的項目類型(稱為 SQL Server 項目),它允許開發人員在 SQL Server 中開發、部署和調試例程(函數、過程和觸發器)、類型和聚合。 iTbulo . c omVnOrcRQ

構建和部署iTbulo . c omVnOrcRQ

SQL Server 項目提供了代碼模板,這使得開發人員能夠輕松地開始為基於 CLR 的數據庫例程、類型和聚合編寫代碼。該項目還允許添加對數據庫中其他的程序集的引用。在構建項目時,可以將其編譯成一個程序集。部署此程序集可以將程序集的二進制文件上載到與該項目相關聯的 SQL Server 數據庫中。部署操作還自動創建在數據庫的程序集中定義的例程、類型和聚合,方法是使用在代碼中定義的自定義屬性(SqlProcedure、SqlFunction 和 SqlTrigger 等等)。它還上載與該程序集相關聯的源代碼和 .pdb 文件(調試符號)。 iTbulo . c omVnOrcRQ

調試iTbulo . c omVnOrcRQ

對於任何平台來說,調試都是開發人員體驗的基本部分。SQL Server 2005 和 Visual Studio 2005 為數據庫編程人員提供了這些功能。調試 SQL Server 2005 對象的關鍵部分在於其易於安裝和使用。調試到運行 SQL Server 的計算機的連接在很大程度上同調試傳統操作系統中運行的進程的方式一樣。調試器的功能不會受到客戶端到服務器的連接類型的影響。這樣就可以調試表格數據流 (TDS) 和 HTTP 連接。而且,還可以跨語言進行無縫調試。因此,如果有一個調用 CLR 存儲過程的 T-SQL 存儲過程,調試會允許您從 T-SQL 過程進入到 CLR 過程。iTbulo . c omVnOrcRQ

返回頁首返回頁首

CLR 與 TransacT-SQL

現在我們進入本文的關鍵部分:對 CLR 集成和 SQL Server 中支持的現有編程語言進行比較。 iTbulo . c omVnOrcRQ

TransacT-SQL (T-SQL) 是 SQL Server 支持的本機編程語言。和大多數 SQL Server 版本一樣,它包含數據處理功能和數據定義功能。數據處理功能一般可以分為兩類:查詢語言(由 SELECT/INSERT/UPDATE/ DELETE 語句組成)和過程語言(WHILE、賦值、觸發器、光標等)。一般來說,SQL Server 中的 CLR 支持為過程語言提供了 T-SQL 的替代方法。 iTbulo . c omVnOrcRQ

即使在 SQL Server 中引入 CLR 支持以前,數據庫應用程序應該盡可能多地使用查詢語言,這始終被認為是很重要的。數據庫應用程序應該利用面向集的查詢處理器,並且只在查詢語言無法表示邏輯時才轉向過程編程。對於 SQL Server 中的 CLR 支持,這仍然是正確的。不應該使用 CLR 來編寫可以用簡單的 SELECT 語句表示的過程代碼。在 SQL Server 2005 中增加了許多重要的功能來提高T-SQL 查詢語言的表達能力。 iTbulo . c omVnOrcRQ

遞歸查詢:遍歷表中的遞歸層次的能力 iTbulo . c omVnOrcRQ

copyright © 萬盛學電腦網 all rights reserved