2012-01-25 55 views
2

在負責規劃和版本的範圍生成數據庫腳本,我想開始我的版本數據庫的變化尤其是因爲我對我的數據庫實例開發然後移動到生產。我還沒有發現任何對我如何做到這一點真正有意義的事情。我正在使用Visual Studio 2010 Pro作爲我的IDE。是否有一個文件使這個過程簡單並能夠相對容易地檢測到數據庫的變化?或者我應該在工作流程中更改哪些內容以使其更容易?我已經成功地做了這樣的事情在過去的SQL Server數據庫版本

回答

6

的方法之一,是通過Sql Source Control。 Visual Studio不爲您提供此功能。

或者,你可以使用SSMS爲您生成數據庫腳本,並將其保存爲文件;那麼你可以檢查腳本。您可以選擇是在一個文件中生成整個數據庫腳本,還是在逐個對象的基礎上進行操作。同步部分必須由您在生產中執行腳本完成。總之一個總的噩夢

Redgate還提供Sql Compare,它非常適合同步數據庫。如果您或您的公司能負擔得起,請查看他們的產品。

+0

哦...我喜歡那個包的外觀。 –

+0

在VS2010中 - 您可以將對象從「服務器資源管理器」拖動到「項目資源管理器」以編寫DB對象的腳本。 – Lucero

0

保存在SVN您的數據庫腳本。這裏是RefernceHow to use SVN Tortoise

OR

在VSS保存數據庫的腳本。下面是引用What is VSS ? How can we use that ?

在這兩種情況下,你可以跟蹤這樣做的,今後您可以檢查這在保存版本的形式在歷史的變遷。

您可以使用紅門產品還

編輯

你怎麼拉出來是什麼發生了什麼變化?

使用比較功能來檢查在以前的版本中所做的更改。

如何將更改應用於實時數據庫服務器?

從服務器下載最新的文件。

我希望你沒有在統一腳本中使用表格的Drop語句。因爲它會從表中刪除所有記錄。

DROP語句將發生已存儲的專業,景觀,功能等

請注意,您必須在生產服務器上運行完整最新的數據庫腳本文件與下面提及的行動計劃

1. Remove Drop Statement for Schema DDL 
2. Add Drop/Create Statements for Stored Proc/Views 
3. Include Alter statements DML of schema. 

希望這一定會幫助你。

enter image description here

+0

這並沒有真正回答這個問題。我知道如何使用SVN,但我不知道如何版本化數據庫。 –

+0

請再次閱讀答案。提到這些產品創建了完整的數據庫/數據庫個人腳本的歷史。需要注意的是,您需要將完整的數據庫腳本保存在任一產品中,以便下次可以根據需要比較更改。我希望這能夠更好地闡明:) – Pankaj

+0

我知道如何使用SVN,這兩篇文章都沒有提到與SQL Server集成的任何內容,並且顯示了不同之處。你的解決方案是隻需要一個新的腳本?你如何確定發生了什麼變化?如何將更改應用於實時數據庫服務器? –

1

我們使用內部我們自己的數據庫解決方案,將所有正確DB版本所需的工具。雖然我意識到它可能不是一個完美的解決方案,但我邀請你看看它(它是開源的):bsn ModuleStore

版本控制方面如下:該工具可以編寫SQL半自動的,它會將源代碼重新格式化爲統一的格式。因此,對於同一個源文件,文件始終是相同的,無論何時和由誰編寫腳本;因此這與非鎖定源控制系統(特別是SVN,Git或Mercurial)很好地配合使用。

重新格式化將所有語句相同的形式(如可選關鍵字,如ASINNEROUTER等的處理),腳本一切以「DBO」模式(即使是在一個不同),將所有標識符放入方括號([something]),大寫所有保留字,縮進等。

除版本控制外,該工具的運行時部分還可以區分正在運行的DB和CREATE腳本(DB源代碼)並應用自動更新所有非破壞性更改(例如更新索引,約束,視圖,存儲過程,觸發器,自定義類型,新表等)。不得不手動對腳本進行修改(表格更改通常需要數據轉換)。如果生成的DB與CREATE腳本不匹配,那麼運行時將確保所有更新都在事務中執行並進行回滾,因此您可以安全地知道數據庫完全位於應用程序所需的版本上,即使它已被手動篡改。

此外,多個「模塊」可用於單個數據庫。每個模塊都作爲模式存儲並獨立於其他模式,從而可以從一個數據庫添加或刪除模塊,並避免爲應用程序的不同部分創建多個數據庫。此外,使用模式來確保沒有名稱衝突。

可能值得注意的是,該工具集對SMO沒有依賴性,它是自治的。

相關問題