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

Jon*_*ell 74 c# sql-server asp.net

我正在尝试构建一个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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我还有一个Controller设置列出来自的帖子MyDatabase.

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

        // GET: Posts
        public ActionResult Index()
        {
            return View(db.Posts.ToList());
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的web.config文件中,连接字符串看起来像这样......

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

我已经尝试过这里发布的建议但是没有用.也尝试了这个.

我还注意到,在我开始运行应用程序后,MyDatabase实例断开连接.如果我使用Visual Studio中的服务器资源管理器刷新数据库,我可以查看表.

我是如何连接到数据库并在Visual Studio 2013中编辑它的,但是当我调试应用程序时它无法连接到数据库?

Bre*_*ret 117

对LocalDB的重大更改:适用于SQL 2014 ; 看一下这篇文章并尝试使用(localdb)\mssqllocaldb服务器名称来连接到LocalDB自动实例,例如:

<connectionStrings>
  <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; 
  ...
Run Code Online (Sandbox Code Playgroud)

文章还提到使用2012 SSMS连接到2014 LocalDB.这让我相信您可能安装了多个版本的SQL - 这使我指出这个SO答案建议更改LocalDB"实例"的默认名称,以避免可能出现的其他版本不匹配问题; 提到的不是问题的根源,而是为了提高对潜在冲突的认识,即在单个开发机器上安装多个SQL版本可能会导致......以及为了避免某些问题而养成习惯的东西.

另一件值得一提的事情 - 如果你因为修补它而试图修复这个问题而使你的实例处于无法使用的状态,那么它可能值得重新开始 - 卸载,重新安装 - 然后尝试使用mssqllocaldb值代替v12.0并查看是否这会纠正你的问题.


Ale*_*lex 38

运行这个:

sqllocaldb创建"v12.0"

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

  • 我生命中的4个小时试图解决这个问题,这个命令会在一秒钟内解决它.它创建一个具有指定名称和版本的新LocalDB实例.如果省略[version-number]参数,则默认为SqlLocalDB构建版本.-s在创建后启动新的LocalDB实例.更多信息:https://msdn.microsoft.com/en-us/library/hh247716.aspx (4认同)
  • 这实际上是做什么的? (2认同)

Mat*_*teo 31

我通常在这篇msdn博客文章使用LocalDB和完整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>
Run Code Online (Sandbox Code Playgroud)

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

tra*_*mer 19

首先 - 有4个问题可能导致常见的 LocalDb SqlExpress Sql Server连接错误 SQL Network Interfaces, error: 50 - Local Database Runtime error occurred,在开始之前需要将v11或v12重命名为(localdb)\ mssqllocaldb

  • 您没有运行服务
  • 你没有firelwall端口 这里 配置
  • 你的安装有和发出/损坏(下面的步骤可以帮助你干净利落地开始)
  • 你没有重命名V11或12 mssqllocaldb 从命名康恩字符串v12.0MSSQLLocalDB样所谓><connectionStrings> <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; ...

我发现最简单的是做下面的事情 - 我附上了图片和步骤以寻求帮助.

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

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" 如果此步骤失败,您可以使用选项dcmd> 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
Run Code Online (Sandbox Code Playgroud)


Mus*_*sab 9

实例可能已损坏或未正确更新
请尝试以下命令=>

C:> sqllocaldb停止MSSQLLocalDB
LocalDB实例"MSSQLLocalDB"停止.

C:> sqllocaldb删除MSSQLLocalDB
LocalDB实例"MSSQLLocalDB"已删除.

C:> sqllocaldb创建
使用版本13.0.1601.5 创建的MSSQLLocalDB LocalDB实例"MSSQLLocalDB".

C:> sqllocaldb启动MSSQLLocalDB
LocalDB实例"MSSQLLocalDB"启动.


Bas*_*ANI 8

也许这个错误来自version于Sql Serveris not installed

connectionString="Data Source=(LocalDB)\v12.0;....
Run Code Online (Sandbox Code Playgroud)

而且你不必安装它

最快的修复是将其更改为你安装任何版本

在我的情况下,我改变它v12.0MSSQLLocalDB


Dal*_*ary 5

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

  1. 首先在 applicationHost 配置文件中进行更改。将以下字符串 setProfileEnvironment="false" 替换为 setProfileEnvironment="true"

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