2009-12-08 61 views
1

由於答案並沒有真正解決問題,所以我在ASP.Net上發佈了這個問題並完成了它的修改。我將在此處發佈編輯的問題:SQL Express&IIS - 如果手動分離數據庫,數據庫不會附加?


我一直在使用attachDB連接字符串,而且通常會部署到IIS。該網站工作正常,但是,我對數據庫進行了一些更改,並且最新版本不會複製它所說的使用中的文件。

我打開SQL管理工作室,看到它被安裝,所以我做了一個dettach。

當時我能夠毫無問題複製的新版本,但是,當我下一次運行該網站,我得到:

Unable to open the physical file "C:\inetpub\wwwroot\vs\App_Data\aspnetdb.mdf". Operating system error 5: "5(failed to retrieve text for this error. Reason: 15105)". An attempt to attach an auto-named database for file C:\inetpub\wwwroot\vs\App_Data\aspnetdb.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

而且,如果我嘗試訪問.NET用戶或其他幾個選項IIS管理器中,我得到以下錯誤:

.NET Users

There was an error while performing this operation.

Details:

A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

OK

我試圖重新啓動應用程序池,重新啓動SQL實例,甚至重新啓動計算機。

沒有什麼幫助,我無法弄清楚什麼是錯誤...它在哪裏記住以前的數據庫連接的位置,爲什麼它不會自動重新連接數據庫?有人說他們在2 1/2小時,但是當一個數據庫沒有被使用時,我等了5個小時,並且SQL管理器顯示它仍然連接着。

當我手動重新附加數據庫時,一切正常。

+0

該消息表示該文件已附加到主更改sysdatabases中,以查看它認爲該文件已附加到哪個數據庫。 – u07ch 2009-12-08 12:07:55

+0

更改是爲了讀取支票 – u07ch 2009-12-08 15:29:36

+0

還要檢查SQL服務器進程用戶是否有權查看已將文件放入的文件夾 – u07ch 2009-12-08 15:30:20

回答

0

您是否確定尚未有與您指向您的網站的SQL Express實例相同名稱的數據庫?

此外,當它嘗試附加數據庫在SQL Express中具有管理權限時,網站運行的標識是否正確?如果沒有,這個命令將不起作用(我不確定它在這種情況下會給出什麼樣的錯誤,但是「拒絕訪問」聽起來是合理的)。

頁面「SQL Server 2005 Express Edition User Instances」似乎很好地概述了問題和解決方法。


編輯補充

難道這是問題:

An error will be generated if a log file exists in the same directory as the data file and the 'database' keyword is used when attaching the primary data file. In this case, remove the log file. Once the database is attached, a new log file will be automatically generated based on the physical path.

從文檔中取供SqlConnectionStringBuilder.AttachDBFileName Property

你們需要之前刪除日誌文件可以通過這種方法重新連接數據庫。

+0

我確定 - 沒有任何附加內容 - 我運行aspx頁面,它連接它並且一切正常很好......我進入企業管理器並進行分離,然後在下次運行aspx頁面時,出現上述錯誤。 – Wil 2009-12-08 15:19:12

1

當您要求使用AttachDBFileName連接字符串將數據庫實時附加到SQL Express實例時,應用程序根本不會連接到SQL Expres sinstance,而是會連接到實例,這是爲請求附加操作的用戶專門創建的新實例。見SQL Server 2005 Express Edition User Instances。此子實例將附加數據庫,並將繼續運行兩個小時,之後它將自行關閉。

當您嘗試從'企業管理器'進行連接時,您將無法連接到子實例(顯式連接到一個顯式連接時顯然很複雜,因此您不會意外地執行此操作),您正在連接到父級實例和數據庫搞亂。總之,要麼堅持使用RANU模型並使用AttachDBFileName,要麼使用正常的數據庫操作模式,並從SSMS管理數據庫。不要混合兩者。