Мне нужно знать, как создать базу данных SQL Server и нового пользователя SQL Server, и назначить этого пользователя для базы данных как db_owner
, когда мое приложение .NET Core впервые запускается с использованием миграций Entity Framework Core (в настоящее время эти шаги выполняется вручную перед первым развертыванием).
Я пытаюсь автоматизировать создание базы данных и пользователя при первом запуске, чтобы сохранить наши шаги аналитика реализаций. Кроме того, я хотел бы получить некоторые рекомендации, если это даже лучшая практика. У нас нет администратора базы данных, и мне не разрешают в SQL Server вручную создавать все необходимое.
Я пытался внедрить Sql()
команды в метод Up()
моей первой миграции, но, поскольку строка подключения уже имеет учетные данные SQL Server пользователя, которого я пытаюсь создать вручную, вход в систему явно не удался .
Я предполагаю, что мне понадобится использовать какую-то аутентификацию Windows для SQL Server для создания базы данных и пользователя, но я не уверен, как использовать аутентификацию Windows для миграции и аутентификацию SQL Server для остальных заявки.
Вот код Up()
, который я пробовал:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("CREATE LOGIN svc_appname_env WITH PASSWORD = 'app_password'");
migrationBuilder.Sql("CREATE USER [svc_appname_env] FOR LOGIN [svc_appname_env]");
migrationBuilder.Sql("EXECUTE sp_addrolemember N'db_owner', N'svc_appname_env'");
...
}
В Startup.cs
:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<MyDatabaseContext>();
context.Database.Migrate();
}
...
}
Я ожидаю, что пользователь и база данных будут созданы, но вместо этого я получаю следующую ошибку:
Ошибка входа пользователя 'svc_appname_env'