Ошибка при доступе к локальной базе данных из UWP: Неожиданная ошибка произошла внутри вызова метода API экземпляра локальной базы данных

#c# #uwp #entity-framework-core #localdb

Вопрос:

У меня есть приложение UWP с уровнем данных EFCore 2.1, которое должно получать данные из локальной базы данных, но я получаю следующую ошибку:

Microsoft.Data.SqlClient.SQLException (0x80131904): При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или был недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Сетевые интерфейсы SQL, ошибка: произошла ошибка времени выполнения локальной базы данных 50. Неожиданная ошибка произошла внутри вызова метода API экземпляра LocalDB. Подробные сведения об ошибках см. в журнале событий приложений Windows.

В журнале событий приложений Windows у меня есть следующие ошибки:

  • Вызов API Windows CreateMutexW вернул код ошибки: 5. Сообщение об ошибке системы Windows: Доступ запрещен.
  • При попытке доступа к конфигурации реестра экземпляра LocalDB произошла непредвиденная ошибка. Подробные сведения об ошибках см. в журнале событий приложений Windows.
  • Формат вызова API Windows. Messagew вернул код ошибки: 1815. Системное сообщение об ошибке Windows: Указанный идентификатор языка ресурсов не может быть найден в файле изображения.

Примечания:

  • Я могу подключиться к локальной базе данных с помощью SSMS.
  • У меня есть API в .Net Core 3.1, который использует один и тот же слой данных и строку подключения в одной и той же локальной базе данных, но в этом проекте нет ошибок, и данные получены правильно.
  • Приложение UWP может правильно подключаться к базе данных SQL Server или SQL Express с тем же уровнем данных: изменяется только строка подключения.

Комментарии:

1. Для локальной базы данных требуются именованные каналы. Может быть, просто использовать SQL Express вместо этого?

2. @ErikEJ Я думаю наоборот: похоже, он пытается использовать общую память. Может быть, переключиться на именованные каналы

3. @Charlieface Я новичок в LocalDB, не могли бы вы сообщить мне, как переключиться на именованные каналы ? Тнх

4. Вы добавляете префикс с np , чтобы принудительно использовать именованные каналы, а lpc для общей памяти server=np:yourServerNameOrAddress вам также необходимо включить Именованные каналы в Диспетчере конфигурации docs.microsoft.com/en-us/sql/database-engine/configure-windows/…