Не удается создать / запустить экземпляр SQL Server LocalDB в Windows 10 build 1809 - PullRequest
0 голосов
/ 17 января 2019

У нас есть серьезная ошибка, о которой сообщили наши клиенты, относительно настольного приложения WPF, которое подключается к SQL Server 2014 Express LocalDB.

При запуске приложения не удалось подключиться к локальной БД.
Похоже, что нашему экземпляру локальной базы данных (CNogaMedicalLocalDB) не удалось автоматически запуститься. Мы вручную получили информацию об экземпляре локальной БД и увидели, что экземпляр находится в состоянии «Остановлено». Обычно это автоматический запуск, и состояние должно быть «Выполняется» Локальный журнал БД не дал никаких ценных данных. В случае, если мы запускаем локальную БД вручную, используя CMD, приложение работает нормально.

Приложение отлично работает на Windows 7, 8 и 10, за исключением последней WIN 10 build 1809 (которая является платформой наших клиентов)! Приложение активно используется многими другими нашими клиентами по всему миру.

Мы не можем воспроизвести проблему в нашей штаб-квартире.
Мы попытались воспроизвести проблему на наших платформах QA (виртуальных машинах) под управлением WIN-10 build 1809.

Приложения Технические подробности:

  1. WPF.
  2. EF Core версия 7.0.0-rc1-final
  3. SQL Server 2014 Express LocalDB версии 12.0.2000.8.
  4. Строка подключения: источник данных = (LocalDb) \ InstanceLocalDB; Исходный каталог = MyAppDB; Комплексная безопасность = True; MultipleActiveResultSets = True; Время ожидания соединения = 10

  5. Установочный пакет собран с помощью Advanced Installer версии 12.3.1.

    5,1. Локальная база данных SQL Server 2014 Express устанавливается вместе с приложением и содержится в качестве предварительного условия в пакете установки.

    5,2. Создание и запуск экземпляра SqlLocalDB также выполняется во время установки приложения с помощью специального действия (сценарий PowerShell, который выполняется на заключительном этапе процессов установки):

    SqlLocalDB.exe создать "SqlLocalDBInstance" SqlLocalDB.exe запускается "SqlLocalDBInstance"

Заранее спасибо.

Олег Сейдер

Отдел исследований и разработок

CNOGA Medical Ltd.

Офис: + 972-4-6361080 доб.127

www.cnoga.com

1 Ответ

0 голосов
/ 18 января 2019

Согласно ссылке , опубликованной Николаем Андерсоном (который благодарит Дэвида Сегуру за то, что он нашел корень этой проблемы и написал сообщение в блоге об этом), эта проблема вызвано тем, что в Windows 10 1809 отсутствуют две библиотеки: BCP47Langs.dll и BCP47mrm.dll

Следующий скрипт PowerShell размещен в ссылке (и здесь, на случай, если ссылка разорвется!), Чтобы позволить вам обновить существующие образы загрузки, которые уже были перезагружены из Windows ADK версии 1809. Рекомендуется резервное копирование перед запуском скрипта, как я уверен, вы бы сделали!

Инструкции, приведенные в статье Николая:

  1. Убедитесь, что у вас есть доступ к 64-разрядной версии Windows 10 1809 ISO-файл и извлеките его содержимое в папку на сервере вашего сайта.

  2. Создайте необходимые папки для экспорта и монтирования: C: \ Temp \ Mount \ Source C: \ Temp \ Mount \ Current C: \ Temp \ Export

  3. Скопируйте файл boot.wim из извлеченного местоположения Windows 10 версия 1809 64-разрядная в папке C: \ Temp \ Export.

  4. Обновите переменную $ BootImagePath в скрипте PowerShell с помощью локальный путь к boot.wim / winpe.wim, найденному в источнике данных вашего загрузочного образа (не забудьте указать имя файла).

  5. Выполнить скрипт

Сценарий:

# Variables
$SourceMountPath = "C:\Temp\Mount\Source" # Create this folder
$BootImageMountPath = "C:\Temp\Mount\Current" # Create this folder
$SourceExportFolder = "C:\Temp\Export" # Create this folder
$SourceBootPath = "C:\Temp\Export\boot.wim" # boot.wim file copied to this location from the Windows 10 1809 x64 source media
$BootImagePath = "" # Local path to your boot.wim / winpe.wim file (not boot.PACKAGEID.wim) for your boot image in ConfigMgr
# Export winpe.wim from boot.wim from Windows 10 1809 source files
$ExportImagePath = Join-Path -Path $SourceExportFolder -ChildPath "winpe.wim"
Export-WindowsImage -SourceImagePath $SourceBootPath -DestinationImagePath $ExportImagePath -SourceIndex 1
# Mount exported WinPE image
Mount-WindowsImage -ImagePath $ExportImagePath -Index 1 -Path $SourceMountPath
# Mount boot image
Mount-WindowsImage -ImagePath $BootImagePath -Index 1 -Path $BootImageMountPath
# Copy BCP47*.dll's
$SourceFilePath = Join-Path -Path $SourceMountPath -ChildPath "Windows\System32\*"
$BootImageFilePath = Join-Path -Path $BootImageMountPath -ChildPath "Windows\System32"
Copy-Item -Path $SourceFilePath -Destination $BootImageFilePath -Filter "BCP47*.dll" -Force
# Dismount exported WinPE image
Dismount-WindowsImage -Path $SourceMountPath -Discard
# Dismount boot image
Dismount-WindowsImage -Path $BootImageMountPath -Save

Надеюсь, это работает для вас!

Rachel

...