我是數據庫開發團隊爲大eshop服務的一部分。我們正在使用MS SQL 2016和ASP.NET。在生產環境中,10臺使用連接池的IIS服務器的客戶端使用SQL Server(我們有7-10k批/秒),我們使用18臺DEV/TESTING IIS服務器(但由於多TB大小,只有一個DEV數據庫)。 我們開發了一個新功能,迫使我們經常更改現有的存儲過程。如何有效的版本存儲程序?
如果我們正在部署對生產環境的更改,它將更改應用程序對IIS的修改以及數據庫過程中的更改。部署時,它們總是更改爲5個IIS服務器,然後更改爲5個。同時,IIS服務器上都存在舊版本和新版本。這些版本必須同時共存一段時間,同時使用數據庫中的過程。在數據庫級別,我們通過使用多個版本來解決這種情況。舊的應用程序版本調用EXEC dbo.GetProduct,新的應用程序版本使用dbo.GetProduct_v2。將新版本的應用程序部署到所有IIS後,每個人都使用dbo.GetProduct_v2。在下一次部署期間,情況會逆轉,並且dbo.GetProduct將包含新版本。類似的情況在於開發和測試環境。
我完全意識到這個解決方案並不理想,我想受到啓發。
我們考慮分離數據部分和邏輯部分。在一個數據庫中會有數據表,其他數據庫將只包含程序和其他程序對象。部署新版本時,我們只需部署包含邏輯的整個數據庫的新版本,而不需要創建過程的版本。來自邏輯數據庫的程序將用數據查詢數據庫。 但是,這種解決方案的缺點是不可能使用我們計劃明年使用的本機編譯過程,因爲它們不支持在其他數據庫中查詢。
另一種選擇是使用一個數據庫,並在不同的模式不同的程序版本...
如果您有任何意見,優點/缺點,或者你知道什麼樣的工具可以幫助我們和管理/部署/使用多個版本PROC請發表評論。
謝謝你這麼多
編輯:我們正在使用TFS和Git,但是這並沒有解決在SQL數據庫的程序版本。我的主要問題是如何處理使用數據庫中多個版本的過程來管理多個IIS應用程序版本的需求。
你看過像GIT這樣的源代碼庫嗎?還有很多其他的選擇,但那真的是你想要投資的東西。https://git-scm.com/ –
當有人問一個問題時,它招待我,但他們的帖子完全由陳述關於該問題的不正確信息組成。如果您使用正確的項目和工具,TFS/Git肯定可以解決版本控制的問題。看看Schema Compare。 –
你的最終目標是什麼?不必在您的IIS代碼中更改SP引用?然後才能夠在DB中管理SP版本? – thomas