2008-09-28 117 views
1

我只是瀏覽堆棧溢出的問題,我想到了一個建議部署數據庫的帖子,只需在app_data文件夾中複製mdf文件並修改連接字符串。爲ASP .NET部署數據庫網站

我知道有些人在開發過程中會在app_code中創建一個mdf文件,但是爲了上線,這真的是一種可行的方式,並且是部署數據庫的一種好方法嗎?

我在開發過程中常常做的事情是編寫自己的SQL腳本文件來構建數據庫,並在本地SQL服務器上運行它。當網站即將上線時,我在目標服務器上運行該腳本,並將我的網站設置爲與數據庫交談。說實話,我從來沒有利用app_code文件夾來存儲數據庫,我通常用它來存儲我的數據訪問層邏輯..

我在這裏做錯了什麼嗎?利用app_data文件夾存儲數據庫真的是一個好習慣嗎?用這種方法我可以看到的一個問題是,部署速度會變慢。通過互聯網傳輸mdf文件肯定會比運行我的sql腳本文件慢得多。期待聽到你在這個問題上的想法和經驗。乾杯。

回答

2

我個人比較喜歡你部署數據庫的方法,我看到了一個很大的優勢:通常Web和DBServer不應該是一臺機器(安全性,可維護性,...),並利用app_code文件夾來保存數據庫似乎有點可信。

1

另一個缺點是MDF文件部署只能在第一次使用。一旦你活着並需要保存數據,這將是不夠的。

1

app_data部署方案對於沒有獨特數據庫服務器的網站很有用(許多免費/較便宜的主機可以實現這一點)。

這在理論上與使用access作爲小型經典ASP網站的數據庫的舊方法類似。

0

根據我的經驗,最佳實踐涉及使用某種構建過程(可能是自動的或您提到的腳本)。然後,將數據庫分成以下幾部分: 1)一次性事件 - 通常您會創建一次數據庫;您可能會插入一次數據或初始部署;模式更改 - 這些都是在構建過程之外處理的。 2)存儲過程,用戶函數和其他可重複事件 - 由構建過程處理。

構建過程然後在部署代碼時部署數據庫結構。

存儲過程等寫成如果它們存在,它們首先被刪除,然後再次創建。

這些腳本然後存儲在您的代碼庫 - 而不是mdf。現在,您可以進行版本控制,歷史記錄,控制構建過程等。至於文件夾 - 我將爲核心數據庫構造創建一個單獨的項目文件夾 - 這些與「代碼」不同,應該這樣處理。但他們可能應該成爲你的解決方案的一部分。

0

實際上,在我看來,數據庫部署對於站點工具,批量deplyments等是有用的。部署包含db的預製應用程序可以是一個簡單的過程。如果後續版本更新,則只需知道是否升級即可。如果是,請運行更新本地數據庫的腳本,否則請複製新數據庫。可以簡化某些有限的情況。