实体框架4.1代码优先与SQLEXPRESS
上的localhost
配合使用。但是,我现在准备连接到常规SQL 2008 server
。
我创建了一个新数据库“NewEfDatabase”。
然后将ApplicationServices
中的“connectionString
”Web.config
更改为指向具有集成安全性的新数据库。
但后来我收到了这个错误:
“CREATE DATABASE permission denied in database 'master'.
”
因此...
a)EF 4.1 CF在所述SQL服务器上需要哪些权限才能完成其工作?
b)我可以在SQL 2008
上为EF 4.1 CF设置一个空数据库,还是我必须让它为我做所有这些工作? (我不确定我的DBA会赞赏让我的EF应用程序有权在特定数据库之外做任何事情)
答案 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'."}。 它对我有用。