SQL 网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例
Posted
技术标签:
【中文标题】SQL 网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例【英文标题】:SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Cannot create an automatic instance 【发布时间】:2014-12-02 14:31:42 【问题描述】:我正在尝试构建一个 ASP.NET MVC 5 Web 应用程序,它在 App_Data
文件夹中有一个 MyDatabase.mdf
文件。我安装了带有 LocalDb
实例的 SQL Server 2014 Express。我可以使用服务器资源管理器编辑数据库表,但是当我调试应用程序并转到需要数据库的页面时,我收到以下错误。
在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:。有关错误详细信息,请参阅 Windows 应用程序事件日志。
所以我查看了Application
下的事件查看器,但一遍又一遍地只看到一个警告。
为缓存压缩内容指定的目录 C:\Users\User1\AppData\Local\Temp\iisexpress\IIS Temporary Compressed Files\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 中对其进行编辑,但是当我调试应用程序时却无法连接到数据库?
【问题讨论】:
你试过(localdb)\v11.0
吗?
刚刚尝试使用(localdb)\v11.0
,但结果与上述相同。
你确定,SQL Server (SQLEXPRESS)
服务正在运行。
是的,当我使用 SQL Server 配置管理器检查时,SQLEXPRESS 实例正在运行
你能用Management studio连接吗,有一篇文章-dyball.wordpress.com/2014/04/28/…,可能有帮助~
【参考方案1】:
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
value 而不是 v12.0
,看看是否可以解决您的问题。
【讨论】:
请提供任何其他解决方案,因为它对我不起作用【参考方案2】:运行这个:
sqllocaldb 创建“v12.0”
从 cmd 提示符为我解决了这个问题...
【讨论】:
这实际上是做什么的? 创建一个名为“v12.0”的本地 SQL 数据库。 我生命中的 4 个小时试图解决这个问题,这个命令在一秒钟内解决了它。它创建一个具有指定名称和版本的新 LocalDB 实例。如果省略 [version-number] 参数,则默认为 SqlLocalDB 构建版本。 -s 在创建新的 LocalDB 实例后启动它。更多信息在这里:msdn.microsoft.com/en-us/library/hh247716.aspx 仅供参考,在运行此 cmd 语句后,我编辑了 Web.config 文件的 connectionString Data Source=(LocalDb)\V12.0;来自数据源=(LocalDb)\MSSQLLocalDB; 这为我修复了它,但在修复 VS 后,重新安装我的扩展,然后强制重启或我的机器,这是我认为在创建实例后需要的所有内容 【参考方案3】:我通常在这个 msdn 博客帖子 Using LocalDB with Full IIS 之后修复这个错误
这需要编辑 applicationHost.config 文件,该文件通常位于 C:\Windows\System32\inetsrv\config。按照 KB 2547655 中的说明,我们应该为应用程序池 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>
【讨论】:
请注意,如果要编辑此文件,请确保使用 64 位文本编辑器,如记事本。如果您使用像 Notepad++ 这样的 32 位版本,它将自动在 SysWOW64 中编辑文件的不同副本。我生命中的几个小时我不会回来。 @Tyler 我非常感谢你指出这一点。我希望我早点阅读你的评论。花了 3 天时间改变了一切。这成功了! 天啊!谢谢泰勒。我在同样的事情上苦苦挣扎,你让我免于再浪费 2 小时! 引用此blogs.msdn.microsoft.com/sqlexpress/2011/12/08/… 这个文件在哪里??【参考方案4】:开始 - 有 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
Possible Issues
您没有services running
你没有firelwall ports here
已配置
您的安装有问题/损坏(以下步骤帮助您从头开始)
你没有rename the V11 or 12 to mssqllocaldb
\\ rename the conn string from v12.0 to MSSQLLocalDB -like so-> `<connectionStrings> <add name="ProductsContext" connectionString="Data Source= (localdb)\mssqllocaldb; ...`
我发现最简单的方法是执行以下操作 - 我已附上图片和步骤以寻求帮助。
First verify which instance you have installed
,您可以通过检查注册表和运行 cmd 来做到这一点
1. `cmd> Sqllocaldb.exe i`
2. `cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"`
if this step fails, you can delete with option `d` cmd> Sqllocaldb.exe d "someDb"
3. `cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"`
4. `cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"`
高级故障排除
Registry
配置
编辑 1,来自 requests 和 cmets:这里是所有版本的注册表路径,以通用格式跟踪注册表
路径
// 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
搜索
SELECT registry_key, value_name, value_data
FROM sys.dm_server_registry
WHERE registry_key LIKE N'%SQLAgent%';
或者在 SSMS Sql Management Studio 中运行它,它会给出你在服务器上所有安装的完整列表
DECLARE @SQL VARCHAR(MAX)
SET @SQL = 'DECLARE @returnValue NVARCHAR(100)'
SELECT @SQL = @SQL + CHAR(13) + 'EXEC master.dbo.xp_regread
@rootkey = N''HKEY_LOCAL_MACHINE'',
@key = N''SOFTWARE\Microsoft\Microsoft SQL Server\' + RegPath + '\MSSQLServer'',
@value_name = N''DefaultData'',
@value = @returnValue OUTPUT;
UPDATE #tempInstanceNames SET DefaultDataPath = @returnValue WHERE RegPath = ''' + RegPath + '''' + CHAR(13) FROM #tempInstanceNames
-- now, with these results, you can search the reg for the values inside reg
EXEC (@SQL)
SELECT InstanceName, RegPath, DefaultDataPath
FROM #tempInstanceNames
故障排除
Network
配置
SELECT registry_key, value_name, value_data
FROM sys.dm_server_registry
WHERE registry_key LIKE N'%SuperSocketNetLib%';
【讨论】:
删除和添加数据库。使用 VS Community 2017 和 MVC 上的 MVA 课程 你在看什么注册表项?? @AdamPlocher 在上面的 reg 图片 中您可以看到corresponding software SQL server versions
在某些情况下可能是孤立的。因此,如果您选择重做安装,最好检查这些密钥是否已删除并重新安装。如果那不是您要寻找的内容,请帮助我更好地理解您的问题,我会尽力帮助您。我花了很多时间来解决这个问题
@Jeroen 很高兴我能帮上忙 :)
@transformer 屏幕截图或您的答案都没有显示在注册表中检查的路径。屏幕截图显示了注册表中的 Microsoft SQL Server 键,但它没有显示父键是什么。您的回答说“首先验证您安装了哪个实例,您可以通过检查注册表来做到这一点”,但没有说明要检查注册表的哪个位置。它是什么注册表路径?谢谢【参考方案5】:
实例可能已损坏或未正确更新。
试试这些命令:
C:\>sqllocaldb stop MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" stopped.
C:\>sqllocaldb delete MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" deleted.
C:\>sqllocaldb create MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" created with version 13.0.1601.5.
C:\>sqllocaldb start MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" started.
【讨论】:
这个建议似乎复制了@transformer 给出的建议? 这个工作首先卸载旧的localdb【参考方案6】:可能出现这个错误是因为这个version
的Sql Server is not installed
connectionString="Data Source=(LocalDB)\v12.0;....
你不必安装它
最快的修复方法是将其更改为您拥有的任何已安装版本
就我而言,我将其从 v12.0
更改为 MSSQLLocalDB
【讨论】:
它在我的情况下使用 MssqllocalDb 创建问题,但它显示错误:/【参考方案7】:这个问题的最终解决方案如下:
首先在 applicationHost 配置文件中进行更改。将下面的字符串 setProfileEnvironment="false" 替换为 setProfileEnvironment="true"
在您的数据库连接字符串中添加以下属性:Integrated Security = SSPI
【讨论】:
ApplicationHost 的路径:C:\Windows\System32\inetsrv\config\applicationHost.config。这篇文章让我很清楚:social.msdn.microsoft.com/Forums/vstudio/en-US/…【参考方案8】:我遇到了同样的问题。我的修复正在改变
<parameter value="v12.0" />
到
<parameter value="mssqllocaldb" />
进入“app.config”文件。
【讨论】:
【参考方案9】:请大家注意泰勒所说的话
请注意,如果要编辑此文件,请确保使用 64 位文本编辑器,例如记事本。如果您使用像 Notepad++ 这样的 32 位版本,它将自动在 SysWOW64 中编辑文件的不同副本。我生命中的几个小时我不会回来
【讨论】:
【参考方案10】:在我的例子中,我们在一个解决方案中有多个项目,并且在使用 Code-First 迁移运行“Update-Database”命令时选择了与包管理器控制台中不同的启动项目。 确保选择正确的启动项目。
【讨论】:
【参考方案11】:我已经解决了上面的问题应用下面的步骤
在您进行这些更改后,请在您的 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" />
【讨论】:
同时检查您的连接字符串【参考方案12】:我的问题是我安装了多个版本的 MS SQL express。我去了我找到的安装文件夹 C:/ProgramFiles/MicrosoftSQL Server/ 它的3个版本。我删除了 2 个文件夹,只留下了解决问题的 MSSQL13.SQLEXPRESS。
【讨论】:
以上是关于SQL 网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例的主要内容,如果未能解决你的问题,请参考以下文章
Update-Database - (localdb) MSSQLLocalDB出错
请高手进来帮忙,关于SQL和网络通信链接失败的问题,追加50分。
vs 2019 找不到本地数据库。错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例不存在
为啥在建立与 SQL Server 的连接时会发生与网络相关或特定于实例的错误?