SQL网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例

时间:2014-10-08 02:26:59

标签: c# asp.net sql-server

我正在尝试构建一个ASP.NET MVC 5 Web应用程序,该文件在MyDatabase.mdf文件夹中有一个App_Data文件。我安装了带有LocalDb实例的SQL Server 2014 Express。我可以使用服务器资源管理器编辑数据库表,但是当我调试应用程序并转到需要数据库的页面时,我收到以下错误。

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例。请参阅Windows应用程序事件日志以获取错误详细信息。

所以我查看了Application下的事件查看器,只反复看到一个警告。

  

为缓存压缩内容指定的目录C:\ Users \ User1 \ AppData \ Local \ Temp \ iisexpress \ IIS临时压缩文件\ Clr4IntegratedAppPool无效。静态压缩正在被禁用。

所以我尝试重新启动服务器,仍然没有去。与以前相同的错误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中连接到数据库并对其进行编辑,但是当我调试应用程序时,它无法连接到数据库?

12 个答案:

答案 0 :(得分:117)

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版本可能会导致......以及为了避免某些问题而养成习惯的东西。

另一件值得一提的事情 - 如果你因为修补它而试图修复这个问题而使你的实例处于无法使用的状态,那么它可能值得重新开始 - 卸载,重新安装 - 然后尝试使用{{1 }}而不是mssqllocaldb,看看是否可以纠正您的问题。

答案 1 :(得分:35)

运行此:

  

sqllocaldb create&#34; v12.0&#34;

从cmd提示解决了这个问题......

答案 2 :(得分:31)

我经常在这篇msdn博客文章Using LocalDB with Full IIS

之后修复这个错误
  

这需要编辑applicationHost.config文件,该文件通常位于C:\ Windows \ System32 \ inetsrv \ config中。按照KB 2547655的说明,我们应该为Application Pool ASP.NET v4.0启用这两个标志,如下所示:

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

答案 3 :(得分:19)

首先 - 在开始之前,有4个问题可能导致 常见 LocalDb SqlExpress Sql Server连接错误 SQL Network Interfaces, error: 50 - Local Database Runtime error occurred { {3}}

我发现最简单的方法是执行以下操作 - 我附上了图片和步骤以寻求帮助。

首先验证您已安装的实例,您可以通过检查注册表 运行cmd

来执行此操作
  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" 如果此步骤失败,您可以使用选项d cmd&gt;删除Sqllocaldb.exe d“someDb”
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"
  5. rename the V11 or 12 to mssqllocaldb

    编辑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
    

答案 4 :(得分:8)

实例可能已损坏或未正确更新 试试这些命令=&gt;

C:\>sqllocaldb stop MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" stopped.

C:\>sqllocaldb delete MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" deleted.

C:\>sqllocaldb create MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" created with version 13.0.1601.5.

C:\>sqllocaldb start MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" started.

答案 5 :(得分:7)

可能出现此错误是因为此version的Sql Server is not installed

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

您无需安装

最快的修复是将其更改为您拥有的任何已安装版本

在我的情况下,我将其从 v12.0 更改为 MSSQLLocalDB

答案 6 :(得分:3)

此问题的最终解决方案如下:

  1. 首先在applicationHost配置文件中进行更改。替换下面的字符串setProfileEnvironment =&#34; false&#34; TO setProfileEnvironment =&#34; true&#34;

  2. 在您的数据库连接字符串中添加以下属性:Integrated Security = SSPI

答案 7 :(得分:3)

我遇到了同样的问题。我的修复正在改变     <parameter value="v12.0" /> 至    <parameter value="mssqllocaldb" /> 进入“app.config”文件。

答案 8 :(得分:3)

请注意Tyler所说的

  

请注意,如果要编辑此文件,请确保使用64位文本编辑器,如记事本。如果您使用像Notepad ++这样的32位数据库,它将自动编辑SysWOW64中文件的不同副本。我生命中的几小时我都不会回来了

答案 9 :(得分:2)

就我而言,我们在一个解决方案中有几个项目,并且在运行带有代码优先迁移的“Update-Database”命令时,选择了与包管理器控制台不同的启动项目。 确保选择正确的启动项目。

答案 10 :(得分:1)

我解决了以上问题,请执行以下步骤

enter image description here

在进行了这些更改之后,请在web.config中进行以下更改

 <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v12.0;AttachDbFilename=|DataDirectory|\aspnet-Real-Time-Commenting-20170927122714.mdf;Initial Catalog=aspnet-Real-Time-Commenting-20170927122714;Integrated Security=true" providerName="System.Data.SqlClient" />

答案 11 :(得分:0)

我的问题是我安装了多个版本的MS SQL Express。我去了安装文件夹C:/ ProgramFiles / MicrosoftSQL Server / 3个版本。我删除了2个文件夹,只剩下解决了问题的MSSQL13.SQLEXPRESS。