2008-09-03 94 views
5

我很早就開始使用VS2008構建的Web應用程序。我有一臺臺式電腦(大部分工作都已完成)和一臺筆記本電腦(偶爾便攜),我使用AnkhSVN保持項目代碼同步。保持我的開發數據庫(SQL Server Express)同步的最佳方式是什麼?保持多個環境中的開發數據庫同步

我有一個SVN中的VS數據庫項目,其中包含創建腳本,當模式更改時我將重新生成這些腳本。最初的想法是在任何事情發生變化時重新創建數據庫,但它很快就會變成一種痛苦。另外,我會丟​​失我輸入的所有樣本行,以確保數據正確顯示。

我正在考慮將.MDF和.LDF文件放在源代碼控制下,但我懷疑SQL Server Express會優雅地處理它,如果我執行SVN更新並將文件從它下面取出,用新的副本替換。將一些大的二進制文件粘貼到源代碼控制中似乎也不是一個優雅的解決方案,即使它只是一個一次性開發數據庫。有什麼建議麼?

回答

3

除了數據庫的CREATE腳本之外,爲什麼不維護默認數據或示例數據腳本呢?

這是我們爲增加版本的應用程序而採取的一種方法,我們已經維護了超過2年的應用程序,並且它工作得非常好。使用默認數據腳本還允許您的QA測試人員使用您也有的數據重新創建錯誤?

你可能也想看看一個問題,我發佈前一段時間:

Best tool for auto-generating SQL change scripts

3

您可以存儲數據庫的備份(.bak文件)而不是.MDF & .LDF文件。

use master 
go 

if exists (select * from master.dbo.sysdatabases where name = 'your_db') 
begin 
    alter database your_db set SINGLE_USER with rollback IMMEDIATE 
    drop database your_db 
end 

restore database your_db 
from disk = 'path\to\your\bak\file' 
with move 'Name of dat file' to 'path\to\mdf\file', 
    move 'Name of log file' to 'path\to\ldf\file' 
go 

你可以把上述的文本文件restore.sql腳本,並使用下面的命令從批處理文件調用它:

osql -E -i restore.sql 

這樣
您可以使用以下腳本輕鬆地恢復你的數據庫您可以創建腳本文件來自動全過程:

  • 從SVN 庫或任何合適的斯道獲取最新的數據庫備份使用BAK文件
7

GE

  • 恢復當前分貝顯然有許多方法可以解決這個,所以我將列出一些應該提供更好的基礎建設上的鏈接。這些是我在過去試圖讓其他人加入時所引用的鏈接。

    然而,儘管如此,如果你不認爲t帽子你承諾不足以實現某種類型的版本控制(手動或半自動),那麼我強烈建議你檢查以下內容:

    聖牛!談論讓生活變得輕鬆!我有一個項目離開了我,並有多個人在進行架構更改,並不得不保持多個環境同步。將Red Gate產品指向兩個數據庫並查看其差異,然後將其同步,這是微不足道的。

  • 1

    我們使用組合,從較高的環境中進行備份。
    以及使用ApexSql處理架構的初始設置。
    最近一直在使用亞音速遷移,作爲一個編碼,源代碼控制,通過CI方式運行以獲取更改腳本,還有由德克薩斯州公司開發的「tarantino」項目。

    大多數這些方法,特別是後者,可以安全地用於大多數測試數據之上。我特別喜歡自動化的過去2,因爲我可以做出改變,並且下次有人得到最新的時候,他們只是運行「更新」,他們迎來了最新的。

    相關問題