SQL Server LocalDB实例无法(自动)启动

时间:2018-06-24 15:59:34

标签: sql-server entity-framework-core sql-server-2014-localdb

我有一个WPF应用程序,该应用程序正在连接到SQL Server 2014 Express LocalDB(即本地.mdf数据库文件)。

该应用程序使用Entity Framework Core库版本7.0.0-rc1-final。

这是我正在使用的连接字符串:

data source=(LocalDb)\InstanceLocalDB; Initial Catalog = MyAppDB; Integrated Security=True; MultipleActiveResultSets=True; Connection Timeout = 10

我在应用程序的安装过程中执行了SQL Server LocalDB的安装。使用以下命令执行的SqlLocalDB实例的创建和启动也是如此:

SqlLocalDB.exe create "SqlLocalDBInstance"
SqlLocalDB.exe start "SqlLocalDBInstance"

该应用程序可在大约50台PC上成功运行,但在以下两台计算机上均无法运行:

首先,应用程序成功与数据库通信,但是过了一会儿,如果没有活动,实例将自动停止(大约10分钟后),然后从此实例无法再次重新连接,这导致以下情况错误:

  

您的SQL Server安装已损坏或已被篡改(未知的程序包ID)。

使用上述相同的命令行手动启动LocalDB实例时:

SqlLocalDB.exe start "SqlLocalDBInstance"

应用程序成功与数据库通信,直到下一次LocalDB实例停止,依此类推。

Windows日志显示以下错误:

  

Windows API调用WaitForMultipleObjects返回错误代码:575。
  Windows系统错误消息是:{Application Error}应用程序无法正确启动(0x%lx)。单击“确定”关闭该应用程序。

SQL LocalDB日志文件提供了此通知消息:

  

RACU实例因其内部超时而终止。这仅是参考消息。无需用户采取任何行动。

我已经重新安装并重新安装了所有软件(Microsoft SQL Server 2014 Express以及删除了.mdf.ldf文件),并不断出现相同的错误。

我注意到在这两个有问题的机器中,UAC已关闭;因此,我尝试在UAC关闭的情况下在测试机上重现该问题-没有重现该问题。

这2台有问题的计算机在Windows 10 pro 64bit下运行。

最后,经过进一步调查,我找到了一种解决方法,方法是重命名应用程序文件夹或更改其位置。

我如何识别解决方案?

我已将整个应用程序文件夹(及其所有二进制文件)重新放置在“ C:\ Program Files(x86)”之外

将目录

放入“ C:\”路径中的其他目录,问题就消失了。

我以同样的方式将应用程序文件夹移回了原始位置;只是现在我改变了

应用程序文件夹的名称,它再次起作用。

问题可能与目录权限有关。

尽管如此,我还是在下面执行了以下步骤,但没有成功:

  1. 未选中文件夹属性的“只读”选项。

  2. 启用了应用程序文件夹的所有“安全”权限。

注意:我正在使用各种自定义策略的组织域中工作...

我的下一步是使用一些实用工具来提取应用程序文件夹的所有权限,然后尝试跟踪问题的根源。您能为我推荐一些工具吗?

2 个答案:

答案 0 :(得分:0)

我对系统文件夹的权限有类似的问题。我使用SysInternals的AccessEnum来完成此任务。

参见此处:https://docs.microsoft.com/en-us/sysinternals/downloads/accessenum

答案 1 :(得分:0)

最后我找到了问题的根源。

问题出在应用程序可执行文件的兼容模式下,该模式设置为“在Windows 8的兼容模式下运行此程序”(在文件属性的“兼容性”标签下)。

一旦我删除(取消选中)此选项,错误就消失了,问题终于为我解决了。