2010-08-04 23 views
1

讓我解釋一下這個問題:)存儲過程應該在執行時檢查潛在的問題嗎?

我正在爲一個新產品寫一堆存儲過程。 他們將只會被開發人員編寫的c#應用程序調用,這些開發人員遵循我提供的技術規範。 我不能進入真正的技術規範,所以我會給出一個足夠接近的例子:

在技術規範中,我們不得不將文件數據存儲在幾個專有zip文件中,數據庫存儲每個文件的名稱和位置(例如,每個zip文件一個數據庫)

現在,可以說這個技術規範指出,要執行「操作A」,必須執行以下步驟:

1:計算要添加的文件的空間需求

2:獲取zip文件及其數據的列表基連接字符串(呼叫存儲的過程「GetZips」)

2:找到zip文件內的合適的位置來存儲該文件(調用存儲的過程「GetSuitableFileLocation」針對每個數據庫連接,直到合適的一個被發現)

3:在步驟2中,您將在zip內提供一個開始/結束點以添加您的文件。 調用「AllocateLocationToFile」存儲過程,傳遞這些值,然後將您的文件添加到壓縮文件。

行 - 所以問題是,應該在「AllocateLocationToFile」重新檢查指定的開始/結束點是否仍然是「空閒」,如果不是,引發異常?

在辦公室有一些關於這個問題的討論,雖然我認爲它應該檢查和提高,但其他人認爲它不應該,因爲開發人員不需要立即調用「GetSuitableFileLocation」。

我可以問一些有價值的oppinions嗎?

回答

3

一般來說,最好儘可能安全。調用代碼不應該依賴外部代碼(sps是一種外部代碼)。這個想法是,你無法預測未來會發生什麼。新人來到公司...... sps被派給另一個團隊,等等......

就個人而言,B()恰好在A()之後的事實並不能保證任何東西。無論出於何種原因改變這一點不被認爲是不可能的。

團隊不應該採取基於「我們要保持這個,一點問題都沒有」,因爲他們可能會被解僱,該公司可能出售的產品等的決策..

我的建議是做檢查,剖析代碼,以及它是否真的成爲移除它的瓶頸,但在某處可以寫出這可以打破!

+0

感謝 - 這幾乎就是我的論點,所以很高興知道我並不孤單,我的想法:) – Sk93 2010-08-04 07:52:01

+0

這實際上更多的是一般性討論,並不僅限於存儲Procs – 2010-08-04 09:03:07

+1

未來,c#可能不會是唯一的訪問方法。 – 2010-08-04 13:16:15

1

鑑於您正在操作文件,並且可以創建所有潛在的破壞,所以在這種情況下,我認爲風險(損壞部分)足夠高以保持謹慎。

和Svetlozar的權利:如果巨大的成功會導致重複使用或其他附加應用程序,該怎麼辦?不是每個人都像你的團隊現在一樣行事良好。

+0

謝謝 - 這是我說過的原因之一,但被擊落..這是很好的知道我並不孤單在這樣的想法:) – Sk93 2010-08-04 07:53:47

0

爲什麼它可能是一個好主意的一個原因將涉及競爭條件。是否有可能兩個用戶同時調用該進程並獲得相同的值?請至少用當前設計的過程來測試這種情況。

+0

沒關係 - 這是由於代碼的工作方式。 – Sk93 2010-08-06 07:33:54

相關問題