EF 4.1 CF:数据库'master'中的CREATE DATABASE权限被拒绝

时间:2011-04-07 16:41:03

标签: entity-framework ef-code-first entity-framework-4.1

实体框架4.1代码优先与SQLEXPRESS上的localhost配合使用。但是,我现在准备连接到常规SQL 2008 server

  1. 我创建了一个新数据库“NewEfDatabase”。

  2. 然后将ApplicationServices中的“connectionStringWeb.config更改为指向具有集成安全性的新数据库。

  3. 但后来我收到了这个错误:

    CREATE DATABASE permission denied in database 'master'.

    因此...

    a)EF 4.1 CF在所述SQL服务器上需要哪些权限才能完成其工作?

    b)我可以在SQL 2008上为EF 4.1 CF设置一个空数据库,还是我必须让它为我做所有这些工作? (我不确定我的DBA会赞赏让我的EF应用程序有权在特定数据库之外做任何事情)

3 个答案:

答案 0 :(得分:13)

您确定在代码中将数据库初始化程序设置为null

Database.SetInitializer<MyDbContext>(null);

如果初始化程序可能尝试删除或创建新数据库,则所有内置实现。您收到的错误表明EF试图删除/创建数据库,但无权在您的SQL Server实例中执行此操作。上面这一行是唯一可以避免这种情况的选项,并且适用于(我认为甚至是绝对必要的)实时环境,无论如何你不想意外删除(由于模型更改或其他原因)。

答案 1 :(得分:3)

在SQL Server中为您的应用程序设置登录。授予该用户dbcreator权限(通过右键单击登录名,转到服务器角色,然后选中“dbcreator”复选框)

答案 2 :(得分:0)

尽量不要使用Windows集成授权,就像我在这篇文章中回复的那样:EF Code First - {"CREATE DATABASE permission denied in database 'master'."}。 它对我有用。