[英]SQL Server stored procedure vs an external dll
我試圖說服某人,使用外部DLL管理sql數據比使用存儲過程更好。 目前,我正在與之打交道的人正在使用vba,並調用sql存儲過程以從許多不同的來源獲取所需的復雜數據。 據我了解,執行此類操作的最佳方法是使用dll /中間層來獲取數據並能夠將其格式化為需要的格式。
注意事項:
那么誰能告訴我使用外部dll然后使用sql存儲過程的一些好處?
使用存儲過程,並編寫數據訪問層,該數據訪問層通過參數化的命令在單獨的dll中調用它們。 存儲過程是標准操作,可為您帶來很多好處,參數化命令可為您提供自動的字符串安全性。
這種類型的設計基本上已經標准化,並且已經使用了多年,以至於Microsoft在.NET 4中包含了一個為您構造它的框架。
或多或少,您和另一個伙伴都是正確的,使用sprocs來確保安全,並出於安全性和可重用性而將您的DAL分開,原因很多
優點:
缺點:
您可以將SQL(包括存儲過程)保存在平面文件中。 文件擴展名可以是txt,但是大多數使用sql-可以將SQL源代碼存儲在CVS / etc中,而不是.NET或Java源代碼。
同意有關控制代碼的要點,在DLL中要容易得多。 與源代碼管理相同。 但是,從純粹的性能角度來看,存儲過程將勝出,因為它們是經過編譯的,而不僅僅是緩存的。 我不知道這是否會帶來足夠的改變,但我想我會考慮一下。
使用存儲過程也可以更加安全,因為您可以僅鎖定對存儲過程的訪問,而不必(不必)向有連接的任何人公開表數據。
我想我沒有真正回答您的問題,還沒有指出您的論點中的漏洞。 抱歉,但是我從他們的角度來看。
我真的認為這歸結為偏好問題 。 我個人比較喜歡ORM和將查詢保存在DLL與存儲的Procs中,與將S.Procs部署到數據庫相比,我發現它們更易於維護和分發。 與原始查詢相比,S.Proc具有某些優勢。 一些優化和一些服務器端邏輯可以提高某些方面的性能。
總而言之,我個人更喜歡在代碼中工作,而不是在DB Mumbo-jumbo中工作,因此,這就是為什么我選擇DLL方法的原因。
另外,您也可以將源代碼也保留在源代碼控制中,而使用存儲過程則要困難得多。
只是我的2c。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.