2010-01-26 55 views
2

我使用胖客戶端和瘦客戶端組件開發應用程序。我們還對我們的數據庫進行了版本化,以便模式更改生成它們自己的版本號,並可以應用更改腳本。但是,數據庫更改並不總是與厚客戶機更改一起發生。是的,今天的數據庫更改可能會添加一個列,並且需要在胖客戶端中使用a,但是明天的數據庫更改可能會修復存儲過程中的錯誤,而不需要進行任何外部更改。我如何編寫胖客戶端來測試它是否與特定數據庫版本兼容,如果某些版本向後兼容,而其中一些版本不兼容?胖客戶端如何測試它是否與數據庫模式兼容?

即使有人關心,我們的.NET應用程序與SQL Server集成,但這似乎更像是一個版本問題而不是平臺問題。除非有特定平臺的解決方案...

+0

請參閱http://stackoverflow.com/questions/115369/do-you-source-control-your-databases。重複http://stackoverflow.com/questions/33638/testing-and-managing-database-versions-against-code-versions – 2010-01-26 13:07:56

+0

也http://stackoverflow.com/questions/1534579/verify-database-changes的重複-version-control和http://stackoverflow.com/questions/308/is-there-a-version-control-system-for-database-structure-changes和http://stackoverflow.com/questions/257045/managing破壞性遷移數據庫更改爲數據庫舊式共享-v – 2010-01-26 13:08:51

回答

3

你可以創建一個表,例如。包含兩個字符串列的元數據,並在該處添加一個條目(或多個條目)與當前版本的模式。我猜你現在做了類似的事情。

並將版本拆分爲兩個數字(如主要/次要方案)。當您以非向後兼容方式更改架構時,則可以增加主要版本。向後兼容更改後,您只需更新次要版本。

主要是由app使用來檢查它是否與當前模式兼容,major + minor用於檢查是否需要更新模式。

我認爲這是大多數應用程序使用的解決方案。

0

您可以採用主要/次要版本號方案嗎?

主號碼的變化意味着客戶需要更新,次號碼的更改不會。

+0

記錄主版本和次版本的「版本號」表對於每個數據庫設計都很重要。它應該有一行。應用程序應該在做任何事之前簡單地查詢它 – 2010-01-26 13:07:03

+0

@ S.Lott:你能分享一下這個「版本號」表格方法的更多細節嗎? – 2010-01-26 13:16:20

+0

@Tahir Akhtar:'CREATE TABLE MY_APPLICATION_VERSION(COMPONENT VARCHAR,MAJOR NUMBER,MINOR NUMBER);'每個更改都會將此表更新爲當前版本的命名組件。每個應用程序都會查詢它以獲取指定組件的當前版本。 – 2010-01-26 13:24:46

0

有了這些,版本號總是在增加。

如果數據庫知道它需要的最小客戶端版本,並且客戶端知道它需要的最小數據庫版本,那麼這是一個簡單的檢查來確定需要升級的東西(如果有的話) - 現在是否將邏輯封裝在存儲程序或代碼,這是你的決定...

相關問題