【问题标题】:SQL Server LocalDB instance fails to start (automatically)SQL Server LocalDB 实例无法启动(自动)
【发布时间】:2018-12-03 07:52:33
【问题描述】:

我有一个 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 Instance 的创建和启动也是如此,使用以下命令执行:

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

该应用在大约 50 台电脑上成功运行,但在以下两台电脑上失败:

一开始,应用程序与数据库通信成功,但过了一段时间,如果没有活动,实例会自动停止(大约 10 分钟后),然后重新连接失败,导致以下这些错误:

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

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

SqlLocalDB.exe start "SqlLocalDBInstance"

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

Windows 日志显示以下错误:

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

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

RANU 实例正在终止以响应其内部超时。这只是一条信息性消息。无需用户操作。

我已经安装并重新安装了一遍(Microsoft SQL Server 2014 Express 以及删除了.mdf.ldf 文件),并且一直收到同样的错误。

我注意到在两台有问题的机器上,UAC 都被关闭了;所以我尝试在关闭 UAC 的测试机器上重现该问题 - 没有任何问题重现。

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

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

我是如何识别解决方案的?

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

目录到“C:\”路径下的其他目录,问题就解决了。

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

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

也许问题与目录权限有关。

尽管如此,我执行了以下这些步骤,但没有任何成功:

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

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

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

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

【问题讨论】:

  • 你不应该使用 EF7,那是一个非常早期的版本,并不比 alpha 好。获取当前的 EF 核心版本,然后重试。
  • 是的,我知道这一点。问题是,正如我之前提到的,该应用程序在大约 50 台机器(具有不同平台)上完美运行了相当长的一段时间,并且那里的 SQL LocalDB 没有问题。该错误仅发生在我迄今为止检测到的那 2 台 PC 上。我认为如果是 EF7 版本问题,错误应该更加一致。

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


【解决方案1】:

我终于找到了问题的根源。

问题在于应用程序可执行文件的兼容模式,该模式设置为“以兼容模式运行此程序:Windows 8”(在文件属性中的“兼容性”选项卡下)。

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

【讨论】:

    【解决方案2】:

    我在系统文件夹的权限方面遇到了类似的问题。我使用 SysInternals 的 AccessEnum 来完成这项任务。

    请看这里:https://docs.microsoft.com/en-us/sysinternals/downloads/accessenum

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      相关资源
      最近更新 更多