當前位置:首頁 » 存儲配置 » 資料庫存儲過程移植性

資料庫存儲過程移植性

發布時間: 2022-04-13 14:17:46

Ⅰ 怎麼使用存儲過程,什麼時候用存儲過程,怎麼用C#調用

之前的朋友,已經回答了怎麼使用存儲過程。那麼,我就說說什麼時候用存儲過程。
首先要說的是,在小型項目當中,我個人不建議您使用存儲過程。事實上,有相當部分的資料庫存儲過程是可以通過單條sql語句組裝,或者是簡單的一些查詢組合而成。那麼,在小型項目當中會增加管理成本。並且程序的運行效率並不會有多大的提高。
但是,事實上隨著你接觸得越深入,會發現,存儲過程被使用得非常頻繁,這是什麼原因呢?
就我的理解談幾點。
第一,我們最早學習程序設計的時候,一直說三層架構,為什麼要三層架構?就是為了把業務邏輯和數據處理分離開來,降低耦合度。但是,如果你在你的程序當中做了過多的數據計算和處理會導致一個問題,就是運行效率。此時,將一部分的數據處理和計算放到資料庫中作,那麼,程序上只需要傳遞參數,獲得結果,就可以了。
第二,OOP的概念,會理解么?類的出現的確是貫徹了OOP的概念,但是使用類的目的是什麼?依然是為了程序的健壯性,獨立性,可移植性,等。試問我在資料庫做存儲過程和在程序內部寫查詢語句相比,哪一個的可移植性更好呢?如果我要用相同的資料庫做另一個系統的時候,我可以少寫多少代碼?這僅僅只是一方面。
哈~想到什麼就寫什麼,總覺得還是有什麼沒寫完的,暫時就寫這么多吧,編程也是需要練習的,所謂的engineer也是從coder爬上來的,哈~祝你成功。

Ⅱ 存儲過程有什麼優點

類似於我們編程時的函數,將常用的或很復雜的工作,預先用SQL語句寫好並用一個指定的名稱存儲起來, 那麼以後要叫資料庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令,跟函數調用差不多!
存儲過程的優點:
1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。
3.存儲過程可以重復使用,可減少資料庫開發人員的工作量
4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權

Ⅲ 什麼是資料庫的儲存過程~~

存儲過程就好象一個批處理文件一樣,你可以在裡面執行很多的SQL,來得到你最好需要的結果
但你發現一個復雜的統計在一條SQL語句中不能實現或是很難實現的時候,那最好用存儲過程來實現
存儲過程的執行速度更快

存儲過程在伺服器端早已編輯執行過的代碼。用戶要做的只是調用和接收存儲過返回的結果。所以調用存儲過程比普通的用查詢語句返回值要快得多。

Ⅳ 使用存儲過程有哪些優點

對於操作員來講,存儲過程簡化了操作員的操作,進程定時調用,可以讓系統自動進行定時化、批量化的操作,減少了操作員的工作量。

而且存儲過程中可以增加一些日誌處理,便於操作員對數據的跟蹤。

Ⅳ 存儲過程作用是什麼,優缺點以及適用范圍是什麼

中用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲並作為一個單元處理。存儲過程存儲在資料庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變數、有條件執行以及其它強大的編程功能。存儲過程在創建時即在伺服器上進行編譯,所以執行起來比單個SQL語句快。 存儲過程的優點: 1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。 2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。 3.存儲過程可以重復使用,可減少資料庫開發人員的工作量 4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權 缺點:1.如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則您仍需要更新程序集中的代碼以添加參數、更新 GetValue() 調用,等等,這時候估計比較繁瑣了。
2.可移植性差
由於存儲過程將應用程序綁定到 SQL Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。 優點: 1.由於應用程序隨著時間推移會不斷更改,增刪功能,T-SQL過程代碼會變得更復雜,StoredProcere為封裝此代碼提供了一個替換位置。 2.執行計劃(存儲過程在首次運行時將被編譯,這將產生一個執行計劃-- 實際上是 Microsoft SQL Server為在存儲過程中獲取由 T-SQL 指定的結果而必須採取的步驟的記錄。)緩存改善性能。 ........但sql server新版本,執行計劃已針對所有 T-SQL 批處理進行了緩存,而不管它們是否在存儲過程中,所以沒比較優勢了。 3.存儲過程可以用於降低網路流量,存儲過程代碼直接存儲於資料庫中,所以不會產生大量T-sql語句的代碼流量。 4.使用存儲過程使您能夠增強對執行計劃的重復使用,由此可以通過使用遠程過程調用 (RPC) 處理伺服器上的存儲過程而提高性能。RPC 封裝參數和調用伺服器端過程的方式使引擎能夠輕松地找到匹配的執行計劃,並只需插入更新的參數值。 5.可維護性高,更新存儲過程通常比更改、測試以及重新部署程序集需要較少的時間和精力。 6.代碼精簡一致,一個存儲過程可以用於應用程序代碼的不同位置。 7.更好的版本控制,通過使用 Microsoft Visual SourceSafe 或某個其他源代碼控制工具,您可以輕松地恢復到或引用舊版本的存儲過程。 8.增強安全性: a、通過向用戶授予對存儲過程(而不是基於表)的訪問許可權,它們可以提供對特定數據的訪問; b、提高代碼安全,防止 SQL注入(但未徹底解決,例如,將數據操作語言--DML,附加到輸入參數); c、SqlParameter 類指定存儲過程參數的數據類型,作為深層次防禦性策略的一部分,可以驗證用戶提供的值類型(但也不是萬無一失,還是應該傳遞至資料庫前得到附加驗證)。 缺點: 1.如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則您仍需要更新程序集中的代碼以添加參數、更新 GetValue() 調用,等等,這時候估計比較繁瑣了。 2.可移植性差 由於存儲過程將應用程序綁定到 SQL Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。

Ⅵ 什麼時候用存儲過程存儲過程的優點及缺點

存儲過程存放於資料庫內而非單獨的文件,它是一種批處理。
當你需要重復調用SQL語句集的時候可以使用。
優點是它可以具有輸入輸出參數以及返回值,而且只在創造時進行編譯,可以設置許可權運行保證安全。
缺點是調試麻煩,移植性不靈活,重新編譯問題,因為後端代碼是運行前編譯的,如果帶有引用關系的對象發生改變時,受影響的存儲過程、包將需要重新編譯(不過也可以設置成運行時刻自動編譯)
大量存儲過程也使維護麻煩。

Ⅶ 怎樣將一個資料庫中的存儲過程復制到另一個資料庫中

把資料庫裡面的所有存儲過程另存為SQL,然後在另外一個資料庫里重新運行這個SQL生成就可以了,但前提是另一個資料庫里的表跟原來是一樣的,不然執行時候存儲過程會報錯

Ⅷ 什麼時候要用存儲過程,存儲過程的優點

使用存儲過程並沒有什麼時候的限制,說白了任何時候都可以使用存儲過程,因為存儲過程是經過編譯的程序片段,在資料庫啟動時已經載入在oracle的cache中了,並且任何人調用它都不會經過重新編譯,也不會進行語法分析及最近路徑選擇等耗時的操作,所以建議多使用。
存儲過程的優點:

1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。
3.存儲過程可以重復使用,可減少資料庫開發人員的工作量
4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權
缺點:
1.如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則您仍需要更新程序集中的代碼以添加參數、更新
GetValue()
調用,等等,這時候估計比較繁瑣了。
2.可移植性差
由於存儲過程將應用程序綁定到
SQL
Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。

Ⅸ SQL存儲過程有什麼好處

優點:

  1. 離數據最近,某些情況下可獲得更好性能

  2. 減少應用復雜度及應用伺服器壓力

  3. 需要顯式調用,不會像觸發器那樣出現問題難以定位

  4. 使用方便

缺點:

  1. 增加資料庫伺服器壓力。相當於將應用壓力轉嫁到資料庫上,而應用伺服器更容易擴展,也就是說大部分情況下資料庫伺服器資源比應用伺服器資源更加珍貴。

  2. 增加網路開銷。如存儲過程存取數據量較大,會造成較大網路開銷。

  3. 可移植性差。如系統有多中資料庫,或從某種資料庫遷移到另一種資料庫,則很有可能遇到兼容性問題。

  4. 導致多處存在業務邏輯。存儲過程某種程度就是將本應放在應用側處理的業務邏輯放到資料庫處理,這會導致業務邏輯存在於多個地方,增加調試維護困難。

  5. 在高並發系統中很可能會導致資料庫壓力瞬間增大。

  6. 存儲過程中的復雜運算會大量消耗資料庫伺服器資源。

總結:

一般情況下盡量少用或不用存儲過程,特別是在一個並發較高架構復雜的大型系統中,更是要減少存儲過程的使用,業務邏輯的工作就應該由應用伺服器處理,而不是交給資料庫。很多時候存儲過程確實可以快速解決問題,但它的維護性、擴展性、移植性等都不好。如果你的系統很小,架構比較簡單,並且開發人員對存儲過程熟悉,那麼可以考慮使用存儲過程減少工作量;但隨著系統增加,架構變復雜,開發人員越來越多,這時存儲過程的存在可能會導致更多的問題。當然,定時ETL或報表統計之類的任務,還是可以考慮使用存儲過程來做的。

Ⅹ 存儲過程的移植會涉及哪些內容

如果要移植存儲過程,就要保證這個存儲過程裡面所調用的過程,函數,表,視圖等對象存在,不然,這個過程就編譯不過去,會報錯。

熱點內容
電腦哪些配置功耗高 發布:2024-11-20 13:21:28 瀏覽:352
加密軟體安裝 發布:2024-11-20 13:21:16 瀏覽:176
android藍牙播放 發布:2024-11-20 13:11:54 瀏覽:237
網易我的世界domcer伺服器激活碼 發布:2024-11-20 12:58:35 瀏覽:467
linux版本歷史 發布:2024-11-20 12:41:12 瀏覽:947
win10安裝linux雙系統 發布:2024-11-20 12:39:53 瀏覽:46
我的世界求伺服器ip 發布:2024-11-20 12:27:22 瀏覽:360
序列匹配的演算法 發布:2024-11-20 12:23:27 瀏覽:190
電腦版如何加入手機版伺服器 發布:2024-11-20 12:22:53 瀏覽:62
源碼超 發布:2024-11-20 12:22:49 瀏覽:630