2011-01-20 39 views
0

我想從同一臺計算機上運行(使用卡西尼)兩個我的Web應用程序副本 - 不是不合理的(或者我認爲!)。一個使用端口80,其他使用端口81。所以,我做了以下內容:在同一臺機器上製作一個ASP.NET MVC網站的副本 - catastrophy?

  1. 停止卡西尼和SQL Express的
  2. 複製和站點根文件夾中粘貼(並更名)
  3. 打開資源管理器卡西尼並在端口81上設置一個新站點並將其指向複製的位置
  4. 更改了複製站點的web.config,以便連接字符串使用「Database = NewAlias」,因爲SQL Express無法附加具有相同別名的兩個數據庫。
  5. 開始卡西尼和SQL Express的再次

當我瀏覽到NEW站點時,出現的第一件事是:

無法打開物理文件 「C:\ site1的\ App_Data文件\ db_log.ldf」。 操作系統錯誤32:「32( 進程無法訪問文件,因爲 它正在被另一個 進程使用。)」。無法創建文件'C:\ site2 \ App_Data \ db_log.LDF',因爲它已經存在 。更改文件 路徑或文件名,然後重試 操作。無法打開登錄請求的數據庫 「NewAlias」。 登錄失敗。用戶 'NT AUTHORITY \ SYSTEM'登錄失敗。文件激活 失敗。物理文件名 「C:\ site1 \ App_Data \ db_log.ldf」可能是 不正確。

它試圖打開從OLD位置(即使在web.config中指定的確切路徑MDB到新的位置),中密度纖維板,但試圖建立一個日誌中的位置。然後,最好的辦法是放棄它不能訪問位置的ldf,或者可能無法登錄到它的提示。

做得很好Microsoft和您的團隊再次爲一些真正直觀的錯誤!誰能幫忙?

+0

LOL - 一些真正的輝煌,我必須補充。當您嘗試刪除上述錯誤中SQL Express'couldnt find'的mdf和ldf時,您無法因爲它們被SQL Express鎖定:P – Jimbo 2011-01-20 07:48:40

+1

上述工作正常,如果您省略了「Database = xxx」別名連接字符串。可悲的是,這意味着你不能對該連接運行備份命令(我希望stackoverflow有一個「慢拍」圖釋) – Jimbo 2011-01-20 08:33:25

回答

0

我不認爲你可以通過文件複製一個實時數據庫。如果先將其分開,然後複製它,則可以通過將文件作爲新數據庫重新掛接(使用sp_detach_db)。

sp_detach_db OldDb 

然後將數據庫文件複製的文件夾,然後重新安裝(與sp_attach_db)作爲一個新的數據庫。

sp_attach_db NewDb, "C:\copy of site\App_Data\db_data.mdf", "C:\site1\App_Data\db_log.ldf" 
0

,這樣做這種事情(和上面其中由錯誤消息隱約躲避的情況一樣)是,雖然所使用的複製MDF文件,其仍掛時,有時會出現另一個大問題到原來的LDF(日誌文件)。您可以運行此命令來獲取這些都被用於連接的實例文件的列表:

sp_helpfile 

,這將給你這樣的事情作爲響應:

name fileid filename filegroup size maxsize growth usage 
========================================================= 
db 1 C:\site2\App_Data\db.mdf PRIMARY 24192 KB Unlimited 1024 KB data only 
db_log 2 C:\site1\App_Data\db_log.ldf  78080 KB 2147483648 KB 10% log only  

您可以從看輸出日誌文件被用舊的數據庫,這顯然會導致一些問題共享的,所以你可以改變它指向複製日誌文件如下:

ALTER DATABASE NewAlias MODIFY FILE (NAME = db_log, FILENAME='c:\site2\App_Data\db_log.ldf') 
相關問題