Экземпляр SQL Server 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 ПК, но не работает на двух следующих:

Сначала приложение успешно обменивается данными с базой данных, но через некоторое время, если не выполняется никаких действий, экземпляр автоматически останавливается (примерно через 10 минут), и с тех пор ему не удается повторно подключиться, что приводит к следующей ошибке:

Ваша установка SQL Server повреждена или подделана (неизвестный идентификатор пакета).

При запуске экземпляра LocalDB вручную с помощью той же командной строки, упомянутой выше:

SqlLocalDB.exe start "SqlLocalDBInstance"

приложение успешно связывается с БД до следующей остановки экземпляра LocalDB и т. д.

Журналы Windows показывают следующую ошибку:

Вызов API Windows WaitForMultipleObjects возвратил код ошибки: 575.
Сообщение об ошибке системы Windows: {Ошибка приложения} Приложение не удалось правильно запустить (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. Включены все разрешения "Безопасность" для папки приложения.

Примечание: я работаю в домене организации со всеми видами пользовательских политик...

Мой следующий шаг - использовать утилиту для извлечения всех разрешений для папки приложения, а затем попытаться найти причину проблемы. Можете ли вы предложить мне несколько инструментов для этого?

2 ответа

Наконец я нашел корень проблемы.

Проблема заключалась в режиме совместимости исполняемого файла приложения, для которого было установлено "Запускать эту программу в режиме совместимости для: Windows 8" (на вкладке "Совместимость" в свойствах файла).

Как только я удалил (снял флажок) эту опцию, ошибка исчезла, и проблема была окончательно закрыта для меня.

У меня была похожая проблема с разрешениями системных папок. Я использовал AccessEnum из SysInternals для этой задачи.

Смотрите здесь: https://docs.microsoft.com/en-us/sysinternals/downloads/accessenum

Другие вопросы по тегам