我意识到这是一个 5 年前的帖子,但它从未得到正确回答,并且发布了一些非常糟糕的信息。
首先,让我们看看 Books Online 对“DBO”角色 (priv) 的看法。重点是我的。
db_owner 固定数据库角色的成员可以对数据库执行所有配置和维护活动。
总而言之,这意味着拥有“DBO”权限的人可以对拥有该权限的任何数据库执行任何他们想做的事情。截至 2005 年,这也意味着他们可以删除数据库。
另请注意,它并没有说能够控制服务器是一件多么血腥的事情。据我所知,您需要“SA”或(最近)“控制服务器”权限来执行 xp_CmdShell。DBO 没有附带 priv,因此它不能运行 xp_CmdShell 或许多其他以“xp_”甚至“sp_”开头的东西。
换档,看起来 OP 已经有点意识到,DBO privs 被认为是“提升的 privs”。我建议您永远不要将 DBO priv 授予应用程序(或其他前端),我只会将其授予应该是负责数据库管理员的人。这些人需要像您选择成为 DBA 的人一样明智地选择。
要回答有关 CRUD 的其他问题……在大多数情况下,CRUD 由 ORM 执行,所需的最高权限是 db_DataReader 和 db_DataWriter。老实说,我什至不允许登录拥有这些权限。我知道世界上每个前端开发人员都会对我大喊大叫,但事实是,即使 CRUD 也应该通过存储过程来完成,以防止攻击者使用允许某人从表中删除的 db_DataWriter 进入。就我而言,应用程序(和其他前端)应该只有未修改的 PUBLIC privs 和执行某些存储过程的 privs ......期间。