任何人都可以想到一個唯一的標識符,它存在於每個數據庫中,並且通過恢復,我可以白名單持續存在嗎?SQL Server數據庫的唯一標識符
我們有數百個本地恢復的數據庫,這些數據庫都是從相同的空白模板開始的。此恢復的數據庫列表不斷變化,因此無法使用sys.database_recovery_status
中的database_guid
來驗證數據庫標識。
我可以通過散列在數據庫開發的早期階段使用的一些GUID來識別數據庫,這些GUID永遠不會被移除,但是這隻處理部分問題 - 如果存在同一數據庫的兩個版本?
例如執行Live to Test,GUID是相同的,但我需要一種方法來唯一地標識哪個是Live,哪個是Test,而不依賴於恢復它們的人遵循正確的命名約定。
您對「數據庫身份」的定義不符合引擎可以跟蹤的任何內容,因此您必須自行構建一些內容。特別是,如果兩個數據庫是完全相同的數據庫(只對文件進行校驗和),並且可以按[LSN]按時間順序區分同一數據庫*實例的備份(https://technet.microsoft.com/library/ms190729),但沒有任何東西可以讓SQL Server看到「live」和「test」的含義。順便說一句,防止事故發生的最好方法是防火牆進行現場測試,以免污染。 –
謝謝,解決方案是從一個帶參數的腳本恢復,驗證它爲Live,Test或Train,然後根據該腳本執行操作。我必須依賴用戶的操作,但這是不可避免的。 –