我需要知道如何创建SQL Server数据库和新的SQL Server用户,以及如何在我的.NET Core应用程序首次使用Entity Framework Core迁移运行时将用户以db_owner
的身份分配给数据库(当前这些步骤是在首次部署之前手动完成的。
我试图在首次运行时自动执行数据库创建和用户创建,以保存我们的实现分析人员步骤。另外,如果这是最佳做法,我想提供一些指导。我们没有DBA,并且不允许我进入SQL Server手动创建所需的所有内容。
我尝试将Sql()
命令注入到我的第一次迁移的Up()
方法中,但是由于连接字符串已经具有我要手动创建的用户的SQL Server凭据,登录显然失败了。
我假设我需要对SQL Server使用某种Windows身份验证来创建数据库和用户,但是我不确定如何对迁移使用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'登录失败