使用MVC和EF Code-First。问题在底部,请继续阅读...
我已为应用程序创建了LocalDb数据库登录 app_user。不希望使用admin(sa)帐户的应用程序 - 出于显而易见的原因:)
数据库登录使其默认数据库指向MyDatabase。
我在MyDatabase中创建了数据库用户 app_user。
将数据库用户添加到 db_datareader 和 db_datawriter 角色。应用程序需要读取和写入表。
当应用程序登录并访问数据库时,会出现以下错误:
在数据库' master'中拒绝CREATE DATABASE权限。无法附加文件' .... \ MyDatabase.mdf'作为数据库' MyDatabase'。
以下是我的设置......
的Web.config
connectionString =" Data Source =(LocalDb)\ v11.0; AttachDbFilename = | DataDirectory | \ MyDatabase.mdf; Initial Catalog = MyDatabase; Integrated Security = False; User ID = app_user; Password = somepwd&#34 ;的providerName =" System.Data.SqlClient的" />
应用程序上下文初始化程序已禁用!
static ApplicationDbContext()
{
// Disable initialization
Database.SetInitializer<ApplicationDbContext>(null);
}
我可以看到为什么需要创建数据库权限的唯一原因是,如果启用了初始化程序,EF期望这样做!只是一个理论!
解决方法:我可以通过在主数据库中为app_user登录创建数据库用户并授予其创建数据库权限来解决此错误。但这将是一个安全漏洞,不希望应用程序以这种权限登录。
问题:为什么数据库用户需要“创建数据库”权限?
答案 0 :(得分:0)
根据这个问题,它可能是与类名和数据库名不匹配的问题,这会导致EF尝试创建新数据库。
entity framework 4.1 code first CREATE DATABASE permission denied in database 'master'