2010-03-19 83 views
4

比方說,我有兩個數據庫實例:RESTORE過程是否依賴於模式?

InstanceA - Production server 
InstanceB - Test server 

我的工作流程是新架構更改部署到InstanceB第一,測試它們,然後將它們部署到InstanceA

所以,在任何一個時間,該實例架構的關係是這樣的:

InstanceA - Schema Version 1.5 
InstanceB - Schema Version 1.6 (new version being tested) 

我的工作流的附加部分,是保持數據InstanceB儘可能新鮮。爲了實現這一點,我正在使用InstanceA的數據庫備份並將它們應用到(恢復它們)到InstanceB

我的問題是,模式版本如何影響恢復過程?

我知道我能做到這一點:

Backup InstanceA - Schema Version 1.5 
Restore to InstanceB - Schema Version 1.5 

但我能做到這一點?

Backup InstanceA - Schema Version 1.5 
Restore to InstanceB - Schema Version 1.6 (new version being tested) 

如果不是,那麼失敗是什麼樣子?

如果是,模式更改的類型是否重要?

例如,如果Schema Version 1.6Schema Version 1.5不同,只需更改storec proc,我想這種類型的模式更改不會影響恢復過程。另一方面,如果Schema Version 1.6Schema Version 1.5有不同的表定義(比如附加列),那麼我的圖像會影響恢復過程。

我希望我已經明確了這一點。

在此先感謝您的任何意見!

回答

4

除非您正在恢復特定文件組,否則恢復將包括數據和模式。完成數據庫恢復將包括所有模式和數據庫,並且將完全替換數據庫。如果您要創建文件組並將特定表放入文件組中,那麼您可以只恢復那些您想要的文件組,並且這些文件組僅包括表格的數據和模式(以及放入文件組的其他任何內容 - 如索引,物化視圖等)

你真正應該看的是架構和數據比較工具。像Redgate,ApexSql Compare,AdeptSQL或Visual Studio Database Edition這樣的東西都可以很好地完成您描述的場景。我個人使用VS數據庫版本是因爲我們獲得了金牌合作伙伴許可證,並且很喜歡它。它完全符合你的要求,並且在這方面做得很好。我過去也用過其他所有的人,並會推薦他們中的任何人。他們大多數有30天的試用版 - 你應該下載一對夫婦,並在當前的情況下給它一個試駕。

+0

+1好工具可以長期節省很多時間。 – codenheim 2010-03-19 21:48:55

+0

嗨斯科特,感謝您的意見。當你說恢復包括數據和模式時,模式是否也包括存儲過程,視圖,用戶,登錄等,還是隻包含表的模式? – 2010-03-19 22:52:14

+0

如果您正在執行完整數據庫還原,它將包含所有模式,包括視圖,sprocs,UDF等。如果要使用單獨的文件組,則可以還原特定的表 - 這些表將包括您的表的數據和模式放入這些文件組中。我會更新我的答案以澄清。 – 2010-03-20 15:57:05

8

不,恢復不查看架構,它只是簡單地恢復數據文件,因此在恢復後最終將使用架構1.5。它會覆蓋已有的內容。

你最好先做數據刷新恢復,然後應用1.6模式更改。

+2

這就是爲什麼我們在腳本中做所有事情(甚至是測試記錄或登錄或查找值的數據輸入)並將它們保存在源代碼管理中的原因之一。在用prod數據(我們經常這樣做)恢復dev之後,運行尚未部署到prod的所有腳本很容易。 – HLGEM 2010-03-19 21:43:53

+0

同意。另外,使用高質量的工具也會有所幫助。我使用ER/Studio來維護更改,並且將舊版本表格的數據傳輸到新版本。 – codenheim 2010-03-19 21:45:19