EF Code-First“数据库'master'中的CREATE DATABASE权限被拒绝。”错误

时间:2015-02-13 03:53:02

标签: asp.net-mvc entity-framework ef-code-first code-first

使用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登录创建数据库用户并授予其创建数据库权限来解决此错误。但这将是一个安全漏洞,不希望应用程序以这种权限登录。

问题:为什么数据库用户需要“创建数据库”权限?

1 个答案:

答案 0 :(得分:0)

根据这个问题,它可能是与类名和数据库名不匹配的问题,这会导致EF尝试创建新数据库。

entity framework 4.1 code first CREATE DATABASE permission denied in database 'master'