• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦>生活課堂>生活小常識>

    存儲過程和事務的區別

    時間: 稱紅1024 分享

      存儲過程和事務的區別想必很多人都不是很了解,一起來看看吧。下面是學習啦小編給大家整理的存儲過程和事務的區別,供大家參閱!

      存儲過程和事務的區別

      存儲過程:是SQL-Server服務器上一組預先編譯好的T-SQL語句。以一個名稱存儲在數據庫中,作為一個獨立的數據庫對象。

      有以下優點:

      1、執行速度快;

      2、提高工作效率;

      3、規范程序設計;

      4、提高系統安全性。

      事務:一般是指用戶定義的一序列操作,這些操作要么全做,要么都不做,是不可分割的一個工作單位.他是一個邏輯工作單元,同時又是一個恢復單元,一個事務提交以后數據庫又處與另一個一致狀態.具體的關于他的操作去找書看吧.

      事務中可以有存儲過程

      存儲過程中也可以有事務

      事務是一系列的對數據庫的操作,這些操作包括存儲過程,更改語句及其它操作。開始語句是BEGIN TRANSACTION (事務開始),結束語句有兩種,一個是ROLLBACK--回滾,一個是--commit提交事務的所有操作。

      存儲過程是實現一定功能的語句組成的程序段。可以包括事務,也可以在某事務當中。

      這是一個包括一個事務處理過程的存儲過程,并且在事務中也包括另一個存儲過程的操作:

      CREATTE PROCEDURE MYPROCEDURE

      AS

      BEGIN TRANSACTION--開始一個事務

      UPDATE TABLENAME SET ABC='DEF' WHERE ......--操作

      EXEC OTHERPROCEDURE '參數' --事務中包括的存儲過程

      IF @@ERROR>0--操作如果失敗

      BEGIN

      ROLLBACK TRANSACTION--回滾

      RAISERROR('更改數據失敗!',16,1)--向前臺報錯

      RETURN--返回,不再繼續執行

      END

      ELSE

      COMMIT TRANSACTION--操作成功,確認所作修改

      GO

      存儲過程的優勢

      (1) 能實現模塊化程序設計。存儲過程是根據實際功能的需要創建的一個程序模塊,并被存儲在數據庫中。以后用戶要完成該功能,只要在程序中直接調用該存儲過程即可,而無需再編寫重復的程序代碼。存儲過程可由數據庫編程方面的專門人員創建,并可獨立于程序源代碼而進行修改和擴展。

      (2) 使用存儲過程可以提高執行效率。當客戶程序需要訪問服務器上的數據時,一般要經過5個步驟:

      ● 查詢語句被發送到服務器;

      ● 服務器編譯T-SQL語句;

      ● 優化產生查詢執行計劃;

      ● 數據庫引擎執行查詢;

      ● 執行結果發回客戶程序。

      如果執行存儲在客戶端本地的T-SQL程序,那么每次執行該程序時,對于程序中的每一條語句都要經過以上5個步驟。而存儲過程在創建時就被編譯和優化,當存儲過程第一次被執行時,SQL Server為其產生查詢計劃并將其保存在內存中,這樣以后在調用該存儲過程時就不必再進行編譯,即以上5個步驟中的第2步和第3步就被省略了,這能大大改善系統的性能。

      (3) 減少網絡流量。一個需要數百行T-SQL代碼的操作,如果將其創建成存儲過程,那么使用一條調用存儲過程的語句就可完成該操作。這樣就可避免在網絡上發送數百行代碼,從而減少了網絡負荷。

      (4) 可作為安全機制使用。管理員可以不授予用戶訪問存儲過程中涉及的表的權限,而只授予執行存儲過程的權限。這樣,既可以保證用戶通過存儲過程操縱數據庫中的數據,又可以保證用戶不能直接訪問存儲過程中涉及的表。用戶通過存儲過程來訪問表,所能進行的操作是有限制的,從而保證了表中數據的安全性。

      存儲過程的類型

      (1) 系統存儲過程

      在SQL Server中的許多管理工作是通過執行系統存儲過程來完成的。系統存儲過程創建和保存在master數據庫中,都以sp_為名稱的前綴。系統存儲過程是SQL Server系統自帶的,具有執行系統存儲過程權限的用戶,可在master數據庫之外直接調用。一般情況下,系統存儲過程執行成功返回0值,若有錯誤發生返回非0值。

      (2) 擴展存儲過程

      擴展存儲過程是以動態鏈接庫(dll)形式存在的外部程序。SQL Server自身帶了大量的擴展存儲過程安裝在master數據庫中,擴展存儲過程與普通存儲過程執行方法相同。

      若擴展存儲過程的前綴為sp_,則該擴展存儲過程在master數據庫之外也可直接調用;否則,必須在擴展存儲過程前面加上“master.dbo.”前綴。開發人員可以使用其他編程語言來創建擴展存儲過程,編寫好擴展存儲過程后,可由sysadmin服務器角色的成員在 SQL Server 中注冊該擴展存儲過程,然后授予其他用戶執行該過程的權限。擴展存儲過程只能添加到 master 數據庫中,利用擴展存儲過程可以擴展SQL Server的功能。

      (3) 用戶存儲過程

      用戶存儲過程是由用戶根據實際問題的需要所創建的存儲過程。固定服務器角色sysadmin 的成員可根據實際需要在master數據庫中創建用戶存儲過程,若使用sp_做存儲過程的前綴,則該存儲過程在任何位置均可直接調用,否則,必須在該存儲過程前面加上“master.dbo.”前綴。對于在用戶數據庫中創建的存儲過程,最好不要使用sp_作為其名稱的前綴,否則如果該存儲過程與系統存儲過程同名,則該存儲過程永遠不會被執行。并且若在該用戶數據庫之外調用該存儲過程,也必須在存儲過程名的前面加上“用戶數據庫名.所有者名.”前綴才能找著、執行該存儲過程。

    存儲過程和事務的區別相關文章:

    1.自動輸出SQLServer存儲過程依賴列表到EXCEL文件

    存儲過程和事務的區別

    存儲過程和事務的區別想必很多人都不是很了解,一起來看看吧。下面是學習啦小編給大家整理的存儲過程和事務的區別,供大家參閱! 存儲過程和事務的區別 存儲過程:是SQL-Server服務器上一組預先編譯好的T-SQL語句。以一個名稱存儲在數據
    推薦度:
    點擊下載文檔文檔為doc格式

    精選文章

    • 存儲過程和函數的區別
      存儲過程和函數的區別

      存儲過程和函數的區別你想知道嗎?下面是學習啦小編給大家整理的存儲過程和函數的區別,供大家參閱! 存儲過程和函數的區別 存儲過程和函數的不同之

    • 村委會與居委會的區別
      村委會與居委會的區別

      一談到村委會與居委會的區別想必很多人都懵了,一起來看看吧。下面是學習啦小編給大家整理的村委會與居委會的區別,供大家參閱! 村委會與居委會的

    • 村淘和淘寶的區別
      村淘和淘寶的區別

      村淘和淘寶目的都是為了購物,那二者存在什么樣的區別呢?下面是學習啦小編給大家整理的村淘和淘寶的區別,供大家參閱! 村淘和淘寶的區別 村淘-全稱

    • 萃取液和原液的區別
      萃取液和原液的區別

      萃取液和原液都是液體的,那么你知道它們有什么樣的區別嗎?下面是學習啦小編給大家整理的萃取液和原液的區別,供大家參閱! 萃取液和原液的區別 萃

    3630468 主站蜘蛛池模板: 亚洲av中文无码乱人伦在线观看 | 日本中文字幕有码视频| 精品久久久久久久久久中文字幕| 44luba爱你啪| www日韩精品| 久久只有这才是精品99| 亚洲第一视频网站| 四虎影视永久地址www成人| 国产精品久久久久影院免费| 少妇群交换BD高清国语版| 极品馒头一线天粉嫩| 毛片a级三毛片免费播放| 美女激情视频网站| 中文字幕无线码一区| 亚洲ts人妖网站| 亚洲欧美成人日韩| 免费v片在线观看视频网站| 国产乡下三级全黄三级bd| 国产精品日韩欧美| 国精品在亚洲_欧美| 天天看天天干天天操| 成年女性特黄午夜视频免费看| 日韩a级片在线观看| 极品人体西西44f大尺度| 欧美影院一区二区三区| 毛片a级毛片免费观看免下载| 特级毛片a级毛片免费播放| 精品人人妻人人澡人人爽人人 | 奷小罗莉在线观看国产| 性久久久久久久| 欧美在线精品一区二区在线观看 | 国产精品国三级国产AV| 国产精品无码电影在线观看| 在公交车上被站着被c| 国产青草亚洲香蕉精品久久| 在线精品无码字幕无码av| 天天爱天天色天天干| 在线观看91精品国产入口| 在线观看视频日韩| 国产高清在线精品免费软件| 国产视频手机在线观看|