日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
T-SQL存儲過程的應(yīng)用
T-SQL存儲過程的應(yīng)用
 更新時間:2008-8-4 4:57:29  點擊數(shù):27
【字體: 字體顏色


    

摘要 介紹了SQL Server中的存儲過程的基本概念,如何在Visual Studio.Net集成開發(fā)環(huán)境中使用存儲過程來提高應(yīng)用程序的執(zhí)行效率,并闡述了怎樣優(yōu)化存儲過程從而進一步提高訪問數(shù)據(jù)的效率,以及存儲過程與數(shù)據(jù)安全之間的關(guān)系。
關(guān)鍵詞  存儲過程   C#   優(yōu)化  數(shù)據(jù)安全

1引言
    當(dāng)應(yīng)用MS SQLServer 創(chuàng)建一個應(yīng)用程序時,Transaction-SQL 是一種主要的編程語言。若運用SQL語言來進行編程,有兩種方法。其一是,在本地存儲Transaction- SQL 程序,并創(chuàng)建應(yīng)用程序向SQL Server 發(fā)送命令來對結(jié)果進行處理。其二是,可以把部分用Transaction-SQL 編寫的程序作為存儲過程存儲在SQL Server 中,并創(chuàng)建應(yīng)用程序來調(diào)用存儲過程,返回結(jié)果,然后對數(shù)據(jù)結(jié)果進行處理。
    本文介紹的是第二種方法,即使用存儲過程訪問數(shù)據(jù)庫。

2存儲過程簡介
2.1存儲過程概念、優(yōu)點

    存儲過程(Stored Procedure)是一組完成特定功能的SQL 語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。存儲過程能夠通過接收參數(shù)向調(diào)用者返回結(jié)果集,結(jié)果集的格式由調(diào)用者決定;能夠返回狀態(tài)值給調(diào)用者,指明調(diào)用是成功或是失;包括針對數(shù)據(jù)庫的操作語句,并且可以在一個存儲過程中調(diào)用另一存儲過程。
存儲過程具有以下優(yōu)點:
    ①存儲過程允許標準組件式編程
    存儲過程在被創(chuàng)建以后可以在程序中被多次調(diào)用,而不必重新編寫該存儲過程。而且數(shù)據(jù)庫專業(yè)人員可隨時對存儲過程進行修改,但對應(yīng)用程序源代碼毫無影響(因為應(yīng)用程序源代碼只包含存儲過程的調(diào)用語句),從而極大地提高了程序的可移植性。
    ②存儲過程能夠?qū)崿F(xiàn)較快的執(zhí)行速度
    如果某一操作包含大量的SQL 代碼或分別被多次執(zhí)行,那么存儲過程要比批處理的執(zhí)行速度快很多。因為存儲過程是預(yù)編譯的,在首次運行一個存儲過程時,查詢優(yōu)化器對其進行分析、優(yōu)化,并給出最終被存在系統(tǒng)表中的執(zhí)行計劃。而批處理的SQL 語句在每次運行時都要進行編譯和優(yōu)化,因此速度相對要慢一些。
    ③存儲過程能夠減少網(wǎng)絡(luò)流量
    對于同一個針對數(shù)據(jù)庫對象的操作(如查詢、修改),如果這一操作所涉及到的SQL 語句被組織成一個存儲過程,那么當(dāng)在客戶計算機上調(diào)用該存儲過程時,網(wǎng)絡(luò)中傳送的只是該調(diào)用語句,否則將是多條SQL 語句,從而大大增加了網(wǎng)絡(luò)流量,降低網(wǎng)絡(luò)負載。
    ④存儲過程可被作為一種安全機制來充分利用
    系統(tǒng)管理員通過對執(zhí)行某一存儲過程的權(quán)限進行限制,從而能夠?qū)崿F(xiàn)對相應(yīng)的數(shù)據(jù)訪問權(quán)限的限制,避免非授權(quán)用戶對數(shù)據(jù)的訪問,保證數(shù)據(jù)的安全。存儲過程隱藏了數(shù)據(jù)庫模式和編程細節(jié),當(dāng)使用客戶端SQL代碼查詢一個數(shù)據(jù)庫時,你需要了解所查詢的表和列的詳情,這會將數(shù)據(jù)庫的模式呈現(xiàn)在客戶連接和客戶面前,存儲過程則不允許客戶端了解細節(jié),客戶或連接掌握的唯一信息就是它們要調(diào)用的存儲過程名,從這個角度看存儲過程提供了一個數(shù)據(jù)安全層。
2.2存儲過程類型
    SQLServer支持以下五種類型的存儲過程:
    系統(tǒng)存儲過程:此類存儲過程內(nèi)置于SQL Server,不能對其任意修改,它們提供有關(guān)數(shù)據(jù)庫模式、對象名、約束、數(shù)據(jù)類型以及許可等等方面的信息。
    局部存儲過程:此類存儲過程由數(shù)據(jù)庫管理員或SQL Server開發(fā)人員編寫,是本文討論的重點。
    臨時存儲過程:此類存儲過程由數(shù)據(jù)庫管理員和SQL Server開發(fā)人員編寫,但是只存在于連接期間。
    遠程存儲過程:此類存儲過程存在于遠程服務(wù)器中,并且可以被一個初始服務(wù)器引用,遠程存儲過程用于分布式應(yīng)用程序中。
    擴展存儲過程:此類存儲過程在功能上類似于局部存儲過程,但它們可以引用SQlServer外部的函數(shù)。
2.3 SQLServer處理存儲過程
    存儲過程的處理分為兩個階段。在第一階段,存儲過程創(chuàng)建后首先由SQL Server數(shù)據(jù)庫引擎解析,這以后會發(fā)生兩件事。其一,SQL Server將該過程的定義、名稱和代碼保存到數(shù)據(jù)庫中,同時,SQL Server還會把代碼交付給查詢優(yōu)化器,以確定代碼的最佳執(zhí)行規(guī)劃;其次,代碼被編譯并被置于過程緩存中,只有在客戶連接顯示調(diào)用重編譯時或執(zhí)行規(guī)劃不再存在于高速緩存中時,高速緩存中的執(zhí)行規(guī)劃才被刷新。如圖1所示。

圖1  SQLServer處理存儲過程階段一

    在第二階段,當(dāng)代碼中引用了此存儲過程名時,查詢規(guī)劃被檢索,過程代碼此時在調(diào)用它的每個連接的上下文中執(zhí)行,任何結(jié)果集或返回值都會返回給每一個連接。如圖2所示。


 
圖2  SQLServer處理存儲過程階段二

2.4 存儲過程中的錯誤處理
    在存儲過程執(zhí)行過程中,如果遇到錯誤,SQLServer會返回錯誤代碼和錯誤信息。SQL Server 有近3800個預(yù)定義錯誤代碼,存儲在master數(shù)據(jù)庫的sysmessages表中。每一個錯誤代碼都有相應(yīng)的精確的級別。錯誤定義的級別從0到25。20以上的錯誤代表重大錯誤,意味著該錯誤會導(dǎo)致存儲進程立刻終止,并且所有的連接都要重新初始化。非關(guān)鍵性錯誤只是禁止當(dāng)前運行的有錯誤的代碼,并繼續(xù)執(zhí)行剩余的代碼。所有的錯誤代碼都有預(yù)定義的錯誤信息?梢愿鶕(jù)錯誤代碼獲得錯誤信息,然后返回給存儲過程的調(diào)用程序,利于程序編寫者處理錯誤。

3  在VS.net中調(diào)用存儲過程

[1] [2] [3]  下一頁
  • 上一篇: 嵌入式系統(tǒng)中閃存設(shè)備I/O軟件的設(shè)計與實現(xiàn)
  • 下一篇: SAN:存儲領(lǐng)域的革命
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1