成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概述講解SQL Server 2005 CLR集成執行功能

開發 后端
文章主要介紹了SQL Server 2005 CLR集成的構建和部署,調試,和CLR 與 TransacT-SQL 區別的詳細講解,希望看了對你有幫助。

現在教大家如何使用 SQL Server 2005 CLR集成開發。我們先來介紹一下 Microsoft .NET Framework 2.0 公共語言運行庫 (CLR),SQL Server 2005顯著地增強了數據庫編程模型的功能。它支持用任何 CLR 語言(特別是 Microsoft Visual C# .NET、Microsoft Visual Basic .NET 和 Microsoft Visual C++)編寫過程、觸發器和函數。同時,它還提供了擴展數據庫系統中的類型系統和聚合函數的功能,方法是允許應用程序創建它們自己的數據類型和聚合函數。

SQL Server 2005 CLR集成

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

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

開發人員將托管程序編寫為一組類定義。將 SQL Server 內旨在用作存儲過程、函數或觸發器(下面統稱為例程)的代碼編寫為類的 static(或 Microsoft Visual Basic .NET 中的 shared)方法。將旨在用作用戶定義的類型和聚合的代碼編寫為一個整類。開發人員編譯該程序并創建一個程序集。然后,將此程序集上載到 SQL Server 數據庫,在其中使用 CREATE ASSEMBLY 數據定義語言 (DDL) 將它存儲到系統目錄。

接著,創建 TransacT-SQL 對象,例如,例程(函數、過程和觸發器)、類型和聚合,并將其綁定到已經上載的程序集中的入口點(對例程來說是方法,對類型和聚合來說是類)。使用 CREATE PROCEDURE/FUNCTION/ TRIGGER/TYPE/AGGREGATE 語句來完成這一步。在創建了這些例程之后,應用程序就可以像使用 T-SQL 例程一樣使用它們。例如,可以從 T-SQL 查詢中調用 CLR 函數,從客戶端應用程序或從 T-SQL 批處理中調用 CLR 過程,就好像它們是 T-SQL 過程一樣。

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

構建和部署

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

調試

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

CLR 與 TransacT-SQL 區別

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

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

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

遞歸查詢:遍歷表中的遞歸層次的能力
分析函數:RANK 和 ROW_NUMBER 允許排列結果集中的行
新的關聯操作:APPLY、PIVOT 和 UNPIVOT

試圖使用 CLR 功能的開發人員應該確保他們充分地利用查詢語言,包括 SQL Server 2005 中的擴展在內。對于在查詢語言中無法以聲明方式表示的邏輯,他們應該考慮將 CLR 作為有效的替代辦法。

現在讓我們看一些方案,其中基于 CLR 的編程能夠補充 T-SQL 查詢語言的表達能力。通常,需要在查詢(可稱為函數)內嵌入過程邏輯。這允許許多方案,例如:根據數據庫表中存儲的值,對每行進行復雜的計算(必須用過程邏輯來表示)。這可以包括將這些計算的結果發送給客戶端,或者使用計算來過濾發送給客戶端的行集,如以下示例中所示:

  1. SELECT <complex-calculation>(<column-name>,...)  
  2. FROM <table> 
  3. WHERE <complex-calculation>(<column-name>,...) = ..  

用過程邏輯來評估表格結果,然后在 SELECT 或 DML語句的 FROM 子句中進行查詢。

SQL Server 2000 引入了支持這些方案的 T-SQL 函數(標量和表值)。有了 SQL Server 2005,就可以用 CLR 語言更容易地編寫這樣的函數,并且會極大地提高它們的性能。之所以編寫這些函數非常容易,是因為事實上編寫 CLR 代碼的開發人員可以利用 .NET Framework API中存在的大量有用函數和類。這個類/函數庫比 TransacT-SQL 中支持的內置函數要豐富得多。此外,CLR 編程語言提供了 T-SQL 中所沒有的豐富構造(例如數組和列表等)。與 T-SQL(它是一種解釋語言)相比,CLR 編程語言之所以具有更好的性能,是因為托管代碼是已編譯的。對于涉及算術計算、字符串處理、條件邏輯等的操作,托管代碼的性能可能要優于 T-SQL 一個數量級。

注對于函數,幾乎沒有必要從函數中訪問數據庫。外部查詢已經從數據庫中檢索到數據值,并且將其作為參數傳遞給函數。這是 CLR 的優勢,在計算性任務上比 T-SQL 更勝一籌。

以上介紹SQL Server 2005 CLR集成,從 CLR 中訪問數據,現在讓我們從編程模型和性能這兩個方面,看看如何用 CLR 來編寫訪問數據庫的業務邏輯。 編程模型 ,使用 T-SQL,只是在過程代碼內部嵌入查詢語言語句 (SELECT/INSER)。

【編輯推薦】

  1. 全面講解CLR安全性
  2. 運用SQL SERVER 2005 CLR解決XML Showplan實例
  3. .Net Compact Framework CLR設計系列之JIT編譯器講解
  4. CLR Via C#教程之裝箱和拆箱講述
  5. CLR VIA C#教程之基元類型 值類型 引用類型介紹
責任編輯:田樹 來源: 黑色旋風網絡
相關推薦

2009-10-23 12:44:35

SQL SERVER

2009-10-23 10:08:29

SQL SERVER

2011-02-28 17:41:20

SQL Server

2010-07-06 15:40:49

SQL Server

2010-07-23 09:53:29

SQL Server

2010-07-20 10:02:41

SQL Server

2010-06-30 10:15:40

SQL Server

2009-10-22 13:02:47

SQL SERVER

2010-07-20 17:47:12

2011-08-04 15:20:52

SQL Server數據庫鏡像

2009-09-17 19:19:17

CLR存儲過程

2010-07-05 13:19:36

2010-07-14 13:21:19

SQL Server

2010-06-30 13:19:17

SQL Server

2010-12-23 09:25:20

SQL Server

2010-07-19 11:01:55

SQL Server

2010-07-23 12:55:29

SQL Server

2010-09-06 11:46:03

SQL Server語句

2009-09-17 18:27:40

CLR是什么

2010-07-09 11:06:13

SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av手机免费在线观看 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 日韩精品久久久久久 | 国产一区二区三区网站 | 日本不卡一二三 | 国产91综合| 国产欧美日韩一区 | 亚洲人成网站777色婷婷 | www.国产一区 | 国产69精品久久久久777 | 日本精品视频在线 | 欧美一级欧美三级在线观看 | 夜夜夜夜夜夜曰天天天 | 久久久精品网站 | 天天狠狠 | 一区二区三区av夏目彩春 | 综合一区二区三区 | 日日夜夜精品视频 | 国产香蕉视频 | 国产精品a久久久久 | 久久久久久久97 | 麻豆久久精品 | 欧美日韩在线免费观看 | 日韩中文字幕网 | 秋霞a级毛片在线看 | 国产成人精品午夜 | 久久久精品亚洲 | 久久免费精品 | 成人午夜精品 | 中文字幕高清视频 | 日韩中文字幕在线观看视频 | 国产影音先锋 | 亚洲精品在线免费观看视频 | 日本不卡一区 | 精品视频一区二区三区在线观看 | 日韩毛片| 天天拍夜夜爽 | 亚洲 自拍 另类 欧美 丝袜 | 91视频免费在观看 | 不卡视频一区二区三区 | 国产精品国产成人国产三级 |