本文介紹了在SQL Server中存儲數據庫架構版本的最佳實踐?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個將部署在安裝了SQL Server的生產PC上的應用程序。
我希望能夠在我的數據庫中存儲和檢索模式的一個版本。
我對能夠實現這一目標的最佳實踐感興趣,主要目標如下:
-
能夠存儲和輕松檢索數據庫的版本號。
隱藏或更難被客戶端找到和操作。
創建新版本時能夠編輯/更改。
備份數據庫或分離數據庫將保留版本號以供取證。
我希望有一種方法可以將”版本”存儲在元數據中,而不是存儲在普通表中,后者可以通過系統存儲過程訪問/設置。
有什么想法或最佳實踐嗎?
編輯:我發現的一個可能很有前途的選擇是使用SQL Server擴展屬性,將分配給數據庫的鍵|值與”SCHEMA_VERSION”和版本號放在一起。它沒有加密(但它的值可能是加密的),也沒有隱藏,但至少從我們的一些用戶和現場人員瀏覽的實際DB結構中刪除了(令我沮喪!:))
推薦答案
我是Red Gate的SQL源代碼管理和SQL比較的產品經理。我們必須解決這個問題,因為我們的工具需要知道數據庫的版本,以便選擇適當的遷移腳本來構建完整的部署腳本。
我們考慮了版本表,這是最常見的自行設計的解決方案。然而,從我們的研究中我們了解到,用戶希望保持數據庫對象集‘不受污染’,因此我們選擇了數據庫級擴展屬性。我們將其附加到腳本中,如下所示:
IF EXISTS (SELECT 1 FROM fn_listextendedproperty(N'SQLSourceControl Database Revision', NULL, NULL, NULL, NULL, NULL, NULL))
EXEC sp_dropextendedproperty N'SQLSourceControl Database Revision', NULL, NULL, NULL, NULL, NULL, NULL
EXEC sp_addextendedproperty N'SQLSourceControl Database Revision', @RG_SC_VERSION, NULL, NULL, NULL, NULL, NULL, NULL
將數據庫加載到SQL Compare中時,它會執行檢查,以確保它聲稱的版本與源代碼管理中存儲的版本相對應。
希望這能有所幫助!
這篇關于在SQL Server中存儲數據庫架構版本的最佳實踐?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,