2009-01-28 287 views
6

如果您有一位負責在實時環境中部署數據庫的DBA,您會選擇向他提供什麼?一個數據庫創建腳本或備份,他可以恢復到現有的數據庫?那裏有什麼樣的優點/缺點? (我們使用MSSQL2000和MSSQL2005)數據庫部署:腳本或備份

回答

5

雖然我使用一個數據庫備份的約翰的首次部署的建議達成一致,我更喜歡至少有供審查劇本的想法,允許檢查編碼標準,績效考覈等

如果您我們正在尋找已經審覈過的東西,那麼備份/恢復對於第一次部署來說是一個完美的選擇,如果在該數據庫中已經「分階段」存在配置數據,則更是如此。這有助於避免冗長或複雜的插入語句。

其超出第一個發佈的給定將被編寫腳本。在我們的環境中,我們需要發佈說明來指定腳本的服務器,實例和路徑。這些腳本應該按數字順序提供,並由目標數據庫分成多個文件夾,並提供第二組回滾腳本。我們甚至要求每個腳本在頂部都有USE語句,所以我們不必擔心在主數據庫中創建新對象! ;)

+0

雖然使用數據庫備份是初始部署的簡單解決方案,但如果在具有與執行備份的服務器不同的區域設置的服務器上進行部署,可能不是一個好的解決方案。過去我們已經使用這種方法,並且在海外客戶發生校對衝突後遇到問題。數據庫備份保留其整理,而腳本將在服務器的默認排序中創建數據庫(除非您指定它)。出於這個原因,我們已經轉移到腳本進行初始部署和後續更新。 – Parmenion 2012-10-18 14:25:45

0

數據庫創建腳本更好 - 您可以隨時打開記事本並修復它。

1

我不確定備份選項,但使用db創建腳本,dba可以根據需要設置數據庫(必須,權限等),然後使用腳本創建表等。

6

我更喜歡用於部署的腳本,它們不那麼具有侵入性。恢復將覆蓋整個數據庫,數據和所有,這可能不是你的生產環境的好主意。

3

對於第一次部署;數據庫備份 ...它只是如此快速和容易。

如果數據庫已經存在;它必須是一系列編號爲的腳本。就我個人而言,我編號我的腳本,只通過腳本進行數據庫更改。這可以確保所有數據庫同步,或者可以使其非常容易同步。

有人認爲這是一種肛門...但我永遠不會有生產部署問題。

1

我更喜歡腳本,因爲您可以將它放入存儲庫並進行跟蹤。你也可以很容易地在遠程服務器上運行它。

1

在源代碼控制下使用腳本 - 一個可愛的副作用是您建立了數據庫中每個對象的可搜索歷史,並且它是人類可讀的。備份是黑匣子 - 你不知道他們將要對你的數據庫做什麼。

0

我願意與腳本一起使用 - 人類可讀性,通過源代碼控制的兼容性以及輕鬆處理數據庫引擎升級的潛力,使我們能夠在組織中實現這一目標。

1

肯定會使用SQL腳本,因爲它們可以受版本控制。最好使它們變小,並且有一批批以已知順序(增量)運行它們,以便在已經投入生產的數據庫中運行它們。

SQL腳本的替代方法是使用遷移框架。您可以在源代碼中以小步驟指定數據庫更改。遷移框架的好處在於,不瞭解SQL的程序員可以簡單地對數據庫進行更改(但這並不會消除需要了解某些數據庫基礎知識)。

他們對如何在增量步驟中建立和拆除數據庫相當明確。這使得更容易在數據庫系統或應用程序的不同版本中測試和重新創建錯誤。

,我知道的遷移框架的一些例子:

備份是爲了實際備份數據庫。隨着數據庫的增長,可移植性下降。所以程序員只需要一部分數據。出於安全原因,他們應該處理測試數據,而不是真實數據。最好有一些測試數據生成器,以便開發人員和測試人員可以在不損壞生產數據的情況下通過實現進行測試。