我們環境中的數據庫正在被2個不同的環境/應用程序共享。 在2個應用程序中,第一個-lets說A,經常更新,而第二個應用程序B沒有經常更新。如何使用同一數據庫處理來自多個應用程序的存儲過程代碼更改?
所以這裏的情況是當應用程序在獲得新的代碼,主要存儲過程更新,它有時會影響並打破2日申請B,正由另一隊更新,不更新過於頻繁。 我明白,這不應該是正確的方式來處理它,而不是更新兩個環境可能是災難性的。 這是因爲應用程序A & B正在由不同的團隊處理。
你會如何優雅地處理這種情況?
從應用B我可以採取的預防措施是 - 在代碼 檢索數據 - 的最好辦法,而檢索數據將檢查空/空列,因此,如果新列由應用程序A補充說,他們可以被應用程序B忽略。 在SQL中檢索數據 - 在該過程中,可以使用可選參數進行處理。
但當C#代碼調用一個過程,我們應該被路過的PARAM值,如果有添加了新的參數,然後將其打破。 有沒有辦法確保如果調用參數丟失,那麼它應該被忽略(從C#或SQL Server)?
我的研究表明 -
,我可以取回從存儲過程的第一個參數列表,然後通過調用使用列表循環過程,並檢查是否帕拉姆存在。 因此,即使應用程序A添加了新的參數,它也可以由應用程序B自動處理。 這可以使用C#中的DeriveParameters或SQL查詢來獲得參數列表。
更改所有存儲過程採取一個CSV形式參數。並將它們分成SPROC並相應地使用它。 這聽起來對於數百個現有sprocs來說是跛腳的。
同樣,正如我所說的 - 這是does not看起來像一個很好的解決方案,如果你也有類似的情況下,如何不同,你會怎麼處理呢? 有沒有框架,我不知道哪些可以解決這種情況?
環境 - ASP.NET/C# 4.0,SQL Server 2008 R2的
編輯 - 讓我改一下,在這裏提供一些更多的細節。
應用/ A隊改變了代碼,但只有C#代碼將被推廣到生產還沒有,而不是數據庫的變化。 這是不同的地方。數據庫代碼只能在下一個版本中使用。
應用/ B隊擁有最新的代碼,但DB的變化是不是在生產着呢,仍然使用舊的數據庫。
根據迄今爲止發佈的3個答案,由於問題是共享數據庫,所以最好在數據庫中創建解決方案,而不是在使用它的應用程序中。 –
你最終安排了與其他團隊做什麼的協議? –