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

问题描述 投票:0回答:1

使用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”providerName =“System.Data。 SqlClient“/>

应用程序上下文初始化器已禁用

    static ApplicationDbContext()
    {
        // Disable initialization
        Database.SetInitializer<ApplicationDbContext>(null);
    }

我可以理解为什么需要创建数据库权限的唯一原因是,如果启用了初始化程序,EF期望这样做!只是一个理论!

解决方法:我可以通过在主数据库中为app_user登录创建数据库用户并授予其创建数据库权限来解决此错误。但这将是一个安全漏洞,不希望应用程序登录具有此类权限。

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

asp.net-mvc entity-framework ef-code-first code-first
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.