2011-09-11 17 views
2

,擺在我的App_Data文件夾。問題連接到數據庫 - 用戶實例,並根據我在asp.net應用程序的.mdf文件我創建了一個實體模型文件(的.edmx)實體框架問題

第一我的所有連接字符串的,由所述實體框架嚮導創建:

<connectionStrings> 
    <add name="Sales_DBEntities" 
     connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='data source=.\SQLEXPRESS;attachdbfilename=&quot;c:\users\ext\documents\visual studio 2010\Projects\WebProject_A\WebProject_A\App_Data\Sales_DB.mdf&quot;;integrated security=True;USER INSTANCE=TRUE;multipleactiveresultsets=True;App=EntityFramework'" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 

上面放置在由嚮導創建一個app.config文件。

我複製相同的連接字符串到web.config文件以及(我不知道這是否是必要的)。

嘗試後運行我的機器上相同的應用程序時,我遇到兩個問題(我已經創建了一個不同的機器上的應用程序)。

首先是關於用戶實例:

無法生成SQL Server的用戶實例由於啓動用戶實例的進程失敗。連接將被關閉

我不真正理解的第一件事是用戶實例實際定義的。

根據MSDN:

用戶實例是由父實例中生成的SQL Server Express數據庫引擎的獨立實例

是我的本地數據庫考慮用戶實例?

我真的很想澄清一下這個問題,因爲我遇到帖子建議 將其標記爲False,原因我不明白。

another post on this matter

從那裏我遇到了另一個解決方案,它解釋說,對於這個問題,你需要 你的機器上的SQL Server中啓用用戶實例。

The Fix

我所做的一切是在該職位說明

,但現在我已經遇到了一個新問題:

試圖附加自動命名的數據庫文件(我的app_data \ my.mdf文件的完整路徑)具有相同名稱的數據庫存在,或指定的文件無法打開,或位於UNC共享上。

我已經試圖刪除

C:\Documents and Settings\(your user account name)\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS 

並重新啓動其他職位一樣建議下的所有文件,但我仍然無法找到這個問題的澄清溶液。

我知道這是一個很長的文章,但任何幫助,將

在此先感謝讚賞。

回答

3

閱讀本文very good overview of what user instances really are

一言以蔽之:

  • SQL Server允許您有多個實例本身一臺計算機上 - 默認實例可以只使用的機器名稱(或IP地址)來訪問主機機 - 所有其他情況下需要由實例名稱(如SQLExpress你的機器)

  • 爲發展宗旨指定,你還可以創建一個用戶實例 - 每個用戶都有自己單獨的SQL Server實例(僅在Express版本中運行),並且數據庫的文件名(path\Sales_DB.mdf)附加到該用戶實例。此實例啓動需求,然後運行和停機時不再需要

雖然這種發展的偉大工程,它不是真正用於以後 - 這當然不是用於生產用途。

在生產環境中,您希望將您的數據庫文件附加到它們應該運行的實際SQL Server實例上 - 通常使用SQL Server Management Studio。當您這樣做時,不再通過文件名引用該數據庫,而是使用數據庫名稱,該名稱在連接到服務器時已提供給數據庫。在這種情況下,SQL Server將處理操作的所有細節 - 並且SQL Server實例始終處於運行狀態(不需要始終「按需啓動」),並且可以使用權限和登錄來控制對數據庫的訪問。

連接字符串隨後將是這個樣子:

<connectionStrings> 
    <add name="Sales_DBEntities" 
     connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='server=YourServerNameHere;database=Sales_DB;integrated security=True;App=EntityFramework'" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 

當你連接一個數據庫到生產(或測試)SQL Server實例,你不需要知道什麼文件,使建立數據庫,並且不需要指定這些文件 - SQL Server將負責處理這些文件。您只需通過其數據庫名稱來引用數據庫。

+0

感謝您澄清用戶實例,我不能說我完全理解它,但不適應挖掘更多。 確實運行一個asp.net應用程序與本地數據庫內App_Data 創建一個用戶實例? 你對我得到的兩個例外有什麼想法嗎? 這對我的理解來說,與sql express服務器在我的機器上定義用戶實例的方式有關。 –

1

的解決方案總是那麼簡單預期:

  1. 雙擊model.edmx文件 - >設計師將打開。
  2. 用鼠標右鍵單擊設計師 - >Update model from database
  3. 新連接 - >Choose Database file (.mdf)下鍵入。
  4. 瀏覽 - >轉至您的App_Data文件夾,然後選擇數據庫。
  5. 將在App.config中創建的連接字符串複製到web.config

再見。

+0

謝謝。你的解決方案有幫早些時候,由於'| Data Directory |',錯誤即將到來。在明確選擇'mdf'文件時,其路徑被實體更改爲實際路徑。 – Sukanya

相關問題