我们有一个外部项目,使用C#和Entity Framework 6 Code First开发,配合SQL Server 2014。它有一个网站和一个wcf服务。
现在,为了部署该项目,承包商表示Web站点运行的IIS APPOOL用户需要具有db_datareader、db_datawriter和db_ddladmin的成员身份才能正常工作,确实如果没有授予这些权限,它是无法正常工作的。
我对此有一些问题,因为即使不是SQL专家,我也觉得部署不应该需要db_ddladmin权限,而承包商说这在EF Code First中是完全正常的,并且认为没有问题。在网上搜索也似乎表明这些权限可能会有问题(http://akawn.com/blog/2012/02/why-you-should-be-cautious-with-the-dbo_owner-role/),这也说明了EF框架Code First真的需要这些权限有点荒谬...
那么,我是否需要为EF Code First授予db_ddladmin权限?以及已部署的Web项目需要db_ddladmin的数据库访问权限是否有问题?
提前致谢!
db_ddladmin
并不是问题,因为您可能需要管理员权限来安装 普通 桌面应用程序。当然,在创建数据库后应该撤销该角色(只需要db_datareader
和最终可能需要的db_datawriter
)。当然,这更加棘手(特别是对于自动化部署),则您可以提供专门的脚本,这些脚本将在非 IIS 用户下运行。据我所知,EF 将在没有该角色的情况下工作,但是 DB 结构必须存在。 - Adriano Repettidb_ddladmin
权限来运行 Code First 迁移,以实际修改数据库。如果数据库已经是最新的,要么是因为迁移已经运行过了,要么是因为你已经关闭了迁移并手动保持数据库最新状态,那么只需要db_datareader
和db_datawriter
权限即可。 - Ben Robinson