2.便攜性差
因為存儲過程將應用程序綁定到SQL Server,所以用存儲過程封裝業務邏輯會限制應用程序的可移植性。優點:1。由於應用程序會隨著時間的推移而變化,T-SQL流程代碼會變得更加復雜,StoredProcedure為封裝這些代碼提供了壹個替代位置。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,使用存儲過程封裝業務邏輯會限制應用程序的可移植性。