2014-10-08 54 views
61

我想構建一個ASP.NET MVC 5 Web應用程序,它在App_Data文件夾中有一個MyDatabase.mdf文件。我有一個LocalDb實例安裝了SQL Server 2014 Express。我可以使用服務器資源管理器編輯數據庫表,但是當我調試應用程序並轉到需要數據庫的頁面時,出現以下錯誤。SQL網絡接口,錯誤:50 - 發生本地數據庫運行時錯誤。無法創建自動實例

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.

所以,我看着在事件查看器Application下,只看到了一個警告一遍又一遍。

The directory specified for caching compressed content C:\Users\User1\AppData\Local\Temp\iisexpress\IIS Temporary Compressed Files\Clr4IntegratedAppPool is invalid. Static compression is being disabled.

所以我嘗試重新啓動服務器,仍然沒有去。與之前相同的錯誤50。

我在Models之下創建了一個類,其中我有一個名爲Post的類。

namespace MyApplication.Models 
{ 
    public class Post 
    { 
     public int Id { get; set; } 
     public string Title { get; set; } 
     public string Content { get; set; } 
    } 

    public class MyDatabase : DbContext 
    { 
     public DbSet<Post> Posts { get; set; } 
    } 
} 

我也有一個Controller設置來列出帖子從MyDatabase

namespace MyApplication.Controllers 
{ 
    public class PostsController : Controller 
    { 
     private MyDatabase db = new MyDatabase(); 

     // GET: Posts 
     public ActionResult Index() 
     { 
      return View(db.Posts.ToList()); 
     } 
    } 

在我web.config文件中的連接字符串看起來像這樣...

<connectionStrings> 
    <add name="DefaultConnection" 
     connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

我試過的建議貼here,但沒有奏效。也試過this

我還注意到MyDatabase實例在我開始運行應用程序後斷開連接。如果我使用Visual Studio中的服務器資源管理器來刷新數據庫,則可以查看這些表。

它是如何連接到數據庫並在Visual Studio 2013中進行編輯,但在調試應用程序時無法連接到數據庫?

+0

你試過'(localdb)\ v11.0'嗎? – 2014-10-08 05:21:49

+0

剛試過'(localdb)\ v11.0',但結果與上面相同。 – 2014-10-08 05:28:42

+0

您確定「SQL Server(SQLEXPRESS)」服務正在運行。 – 2014-10-08 05:30:52

回答

108

Breaking Changes to LocalDB: Applies to SQL 2014;看看這篇文章了,並嘗試使用(localdb)\mssqllocaldb作爲服務器名稱連接到的LocalDB實例自動,例如:

<connectionStrings> 
    <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; 
    ... 

文章還提到使用2012 SSMS的連接到2014年的LocalDB。這導致我相信你可能安裝了多個版本的SQL - 這使我指出this SO answer建議更改LocalDB「實例」的默認名稱以避免可能出現的其他版本不匹配問題;提到的不是問題的根源,而是爲了提高對單個開發機器上安裝的多個SQL版本可能導致的潛在衝突的意識......並且爲了避免某些事情而養成習慣。

另一件值得一提的事情 - 如果由於修補它而嘗試修復此問題而使您的實例處於不可用狀態,則可能需要重新開始 - 卸載,重新安裝 - 然後嘗試使用mssqllocaldb值而不是v12.0,看看是否可以解決您的問題。

+1

謝謝!希望我在2小時之前發現了這個... – Ozgar 2017-07-05 14:45:37

+0

任何其他解決方案請因爲它不適用於我 – Ahmad 2018-03-04 16:52:34

32

運行此:

sqllocaldb create "v12.0"

從命令提示符解決了這個對我來說...

+2

這實際上做了什麼? – 2016-03-11 00:59:29

+1

創建名稱爲「v12.0」的本地SQL數據庫。 – 2016-04-09 22:37:21

+4

4個小時的生活試圖解決這個問題,這個命令一秒鐘就解決了。 它使用指定的名稱和版本創建一個新的LocalDB實例。 如果[version-number]參數被省略,它將默認爲SqlLocalDB構建版本。 -s在創建新的LocalDB實例後啓動它。 更多的信息在這裏: https://msdn.microsoft.com/en-us/library/hh247716.aspx – 2016-12-13 16:39:09

25

我通常解決這個errore下面這個MSDN博客帖子Using LocalDB with Full IIS

This requires editing applicationHost.config file which is usually located in C:\Windows\System32\inetsrv\config. Following the instructions from KB 2547655 we should enable both flags for Application Pool ASP.NET v4.0, like this:

<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0"  managedPipelineMode="Integrated"> 
    <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" /> 
</add> 
+15

請注意,如果你想編輯這個文件,請確保你使用的是像記事本這樣的64位文本編輯器。如果您使用Notepad ++之類的32位軟件,它將自動在SysWOW64中編輯該文件的另一個副本。我的生活幾個小時我不會回來。 – Tyler 2016-03-25 16:10:44

+1

@泰勒我不能感謝你指出這一點。我希望我早點讀過你的評論。花了3天改變一切。這使得技巧! OMG! – 2016-07-19 07:26:21

+1

OMG!謝謝泰勒。我在同樣的事情上掙扎,你讓我免於浪費了2個小時! – 130nk3r5 2016-07-28 10:33:04

3

最終解決了這個問題低於:

  1. 首先要在applicationHost配置文件中的變化。下面替換字符串setProfileEnvironment =「false」表示setProfileEnvironment =「真」

  2. 在你的數據庫連接字符串添加如下屬性:集成安全性= SSPI

3

我遇到了同樣的問題。我的修復程序正在更改爲「app.config」文件中的 <parameter value="v12.0" /><parameter value="mssqllocaldb" />

6

也許就因爲這個version Sql Server的is not installed

connectionString="Data Source=(LocalDB)\v12.0;.... 

的這個錯誤,你沒有安裝它

最快的修復是將其更改爲你安裝任何版本

在我的情況下,我將它從v12.0改爲​​

+0

它使用MssqllocalDb在我的情況下創建問題,但它顯示錯誤:/ – Ahmad 2018-03-04 13:59:59

3

全部請注意什麼湯彥麟表示

Note that if you want to edit this file make sure you use a 64 bit text editor like notepad. If you use a 32 bit one like Notepad++ it will automatically edit a different copy of the file in SysWOW64 instead. Hours of my life I won't get back

11

要開始 - 有4個問題,可能會造成的共同的LocalDB SQLEXPRESS SQL Server連接錯誤SQL Network Interfaces, error: 50 - Local Database Runtime error occurred,你就開始你need to rename the v11 or v12 to (localdb)\mssqllocaldb

  • 你沒有services running
  • 你沒有配置firelwall portshere
  • 安裝有及發行/損壞(下面的步驟幫助給你一個乾淨的開始)
  • 你沒有rename the V11 or 12 to mssqllocaldb重命名來自康涅狄格州字符串v12.0到​​般的所謂><connectionStrings> <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; ...

我發現,最簡單的是做以下 - 我已附上圖片和ST eps的幫助。

首先確認你已經安裝的情況下,可以通過做到這一點通過運行CMD

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" 如果這一步失敗檢查註冊表,就可以刪除選項d cmd> Sqllocaldb.exe d「someDb」
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png

編輯1: 所有版本註冊表路徑 通用格式追查註冊表

// SQL SERVER RECENT VERSIONS 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\(instance-name) 

// OLD SQL SERVER 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer 
// SQL SERVER 6.0 and above. 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive 
// SQL SERVER 7.0 and above 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent 
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server 7 
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServ65 
+1

刪除並添加數據庫工作。使用VS社區2017和MVC上的MVA課程 – Jeroen 2017-03-23 20:07:57

+0

你在看什麼註冊表鍵? – 2017-06-13 14:04:36

+0

@AdamPlocher在_reg picture_上面,您可以看到「相應的軟件SQL服務器版本」,這在某些情況下可能會成爲孤兒。所以如果你選擇重做安裝,最好檢查一下這些密鑰是否被刪除並重新安裝。如果這不是你想要的,那麼我會更好地理解你的問題,我會盡力幫助你。我花了很多時間解決這個問題 – transformer 2017-06-14 18:13:03

2

實例可能已損壞或不能正常更新
試試這些逗號nds =>

C:> sqllocaldb stop MSSQLLocalDB
LocalDB實例「MSSQLLocalDB」已停止。

C:> sqllocaldb刪除MSSQLLocalDB
已刪除LocalDB實例「MSSQLLocalDB」。

C:> sqllocaldb create MSSQLLocalDB
使用版本13.0.1601.5創建的LocalDB實例「MSSQLLocalDB」。

C:> sqllocaldb start MSSQLLocalDB
LocalDB實例「MSSQLLocalDB」已啓動。

+0

此建議似乎可以複製@transformer給出的實例嗎? – 2017-07-20 11:16:43

2

就我而言,我們在一個解決方案中有幾個項目,並且在運行帶有代碼優先遷移的「Update-Database」命令時選擇了不同於包管理器控制檯的啓動項目。 確保選擇正確的啓動項目。

相關問題