然而,在sql server 2005中,我們可以用.net家族的語言——主要是vb.net和c#來編寫儲存過程(以程式設計客棧及方法、觸發器和其它元件)。讓我們來熟悉一下關於編寫儲存過程新方法的5個常見問題。它們是非常值得我們**的。
1、為什麼我們必須使用clr模式來編寫儲存過程呢?
主要原因是速度。sql clr在很多方式下都執行較快:比如字串處理,它比t-sql執行快很多,並且對於錯誤的處理能力也更加強大。同時,由於clr所提供的來執行這些事務的框架都更為完善,因此任何需要與資料庫之外www.cppcns.com資源進行事務互動的儲存過程——比如,檔案系統或者web服務——clr sp都是表現最好的。
2、clr最適合編寫哪些型別的儲存過程?
一般來說,在資料上執行繁重計算而不是僅僅是查詢資料的sp最適合用clr。如果乙個clr sp只是封裝乙個複雜的select語句,那麼我們將無法看到顯著的效能增益,因為每次執行sp時,都必須驗證clr中的sql語句。事實上,它比僅將select語句作為t-sql sp處理表現還要差。
乙個經典的好方法是:如果需要執行的sql的行數很多,那麼可以將sql封裝在乙個常規的sp上。如果想要在乙個大的資料集上執行clr風格的處理,那麼我們可以在clr sp內部呼叫乙個常規的sp來獲取這個大的資料集。這樣,常規的sp會被預編譯,效能也會更好,同時資料轉換效能也會有所提高。
注意:這種情況是假定我們需要在資料層上進行複雜的資料處理,而不是在顯示層上。事實上我們在編寫**之前就需要考慮這些問題。
3、是否應該把現有的儲存過程轉換為cl模式?
簡單而言,「要有好處才去做」。在這種情況下,可以為指定的儲存過程建立乙個同等的clr實現的版本,然後使用實際資料對兩種sjvgqzduiqwp進行測試。除非我們可以確定新的儲存過程:(a)按照預計的方式執行,(b)對效能有實際的提公升,否則應該繼續使用老的儲存過程。其實clr跟其它的儲存過程一樣,沒什麼奇特的。
4、在沒有開發ide的情況下,可以建立clr(common language runtime)儲存過程嗎?
當然,我程式設計客棧們可以通過c#編譯手動實現這類開發。然而,使用visual studio或者類似的ide可以更簡單,特別是當我們在整個企業範圍內轉換或實現大量sp時。
5、轉換有多難?
很明顯,我們必須具備其中一種支援語言的知識,如vb.net或者c#。事實上,sql命令是「封裝」在clr**中的,因此,只要我們知道如何使用它,那麼在clr重新實現現有的t-sql是不難的。比較有難度的是如何使用這種語言來優化我們正在做的工作,這個問題就不是幾個要點就可以歸納的。
本文標題: 在sqlserver 2005中編寫儲存過程
本文位址:
With在sql server 2005中的用法
with在msdn中的講解,可以參考鏈結 1 2 建立錶值變數型別 3 4create type ty newareagoods as table 5 areaid int notnull,6 goodsid int notnull 7 8 9 創鍵返回今天 的資料 10 根據有 的地區獲取參 11...
在SQLServer2005中實現表的行列轉換
pivot和unpivot關係運算子是sql server 2005提供的新增功能,因此,對公升級到sql server 2005的資料庫使用pivot和unpivot時,資料庫的相容級別必須設定為90 可以使用sp dbcmptlevel儲存過程設定相容級別 在查詢的from子句中使用pivot和...
在SQL Server2005中進行錯誤捕捉
任何程式都可能出現錯誤,在sql server中執行transact sql也不例外。如果在transact sql中發生了錯誤,一般有兩種捕捉錯誤的方法,一種是在客戶端 如 c delphi等 中使用類似try.catch的語句進行捕捉 另外一種就是在transact sql中利用transact...