В настоящее время я пытаюсь выполнить проект Web Deploy ASP.NET CORE, который использует EF Core на удаленном сервере IIS. Я проверил этот флаг для выполнения миграции EF при публикации:
Но, к сожалению, мне не хватает зависимостей:
C:\Program Files\dotnet\sdk\8.0.304\Sdks\Microsoft.NET.Sdk.Publish\targets\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(140,5): Error : Web deployment task failed. (The SQL provider cannot run because of a missing dependency. Please make sure that Microsoft SQL Server Management Objects (Version 10 or higher) is installed. Learn more at: https://go.microsoft.com/fwlink/?LinkId=221672#ERROR_SMO_NEEDED_FOR_SQL_PROVIDER.)
Publish failed to deploy.
Я безуспешно пытался установить следующий пакет NUGET на свой VS 2022:
Я думаю, что база данных должна создаваться автоматически, когда я использую этот флаг.
Для ошибок типа ERROR_SMO_NEEDED_FOR_SQL_PROVIDER
обычное решение — установка последней версии SMO с помощью установщика веб-платформы. Согласно этой официальной документации убедитесь, что в процессе установки нет ошибок.
Если после выполнения правильных шагов установки он не работает должным образом, возможно, это проблема с разрешениями IIS. Попробуйте запустить IIS от имени администратора, а затем настроить веб-развертывание.
Если описанные выше действия не решили проблему, переустановите Microsoft SQL Server с полными компонентами. Но это займет больше времени.
Спасибо, Стив Пай, ваш ответ решил мою проблему.
SMO должен быть установлен на вашем веб-сервере, а серверу IIS может потребоваться настройка разрешений, чтобы он мог выполнять миграцию к нужной базе данных. Обычно SMO устанавливается вместе с SQL Server, но в большинстве веб-развертываний это будет другой компьютер, чем веб-сервер IIS. При миграции создание базы данных и т. д. будет выполняться с сервера IIS.