【问题标题】:SQL Server db_ownerSQL Server 数据库所有者
【发布时间】:2010-06-07 13:54:53
【问题描述】:

在我的 SQL2008 中,我有一个用户是“db_datareader”、“db_datawriter”和“db_ddladmin”数据库角色,但是当他尝试使用 SSMS 修改表时,他收到一条消息:

您没有以数据库所有者或系统管理员身份登录。您可能无法保存对不属于您的表所做的更改。

当然,我想避免这样的消息,但直到现在我确实找到了方法...... 因此,我尝试通过将他添加到“db_owner”角色来修改用户,当然我没有上面的消息。

我的问题是:

  • 是否可以将用户保留为“db_owner”角色,但拒绝某些操作,例如更改用户或?我尝试在数据库级别安全地“更改任何用户”,但它不起作用...

谢谢!

【问题讨论】:

    标签: sql-server security owner


    【解决方案1】:

    如果用户是 db_ddladmin 的一部分,这应该不是问题。这只是warning

    【讨论】:

      【解决方案2】:

      db_ddladmin 固定数据库角色的成员可以在数据库中运行任何数据定义语言 (DDL) 命令。这可能只是来自 SSMS 的警告,请尝试创建用户并尝试更改一些表

      【讨论】:

        【解决方案3】:

        我的理解一直是任何拥有 db_owner 权限的用户都可以对数据库执行任何操作,包括删除数据库。当然,这在 SQL 2005 中是正确的。我没有听到任何暗示这在 SQL 2008 中发生了变化。

        【讨论】:

          【解决方案4】:

          这些确实是警告,我看不出有任何方法可以在 SSMS 中禁用该类型的警告。

          在 2008R2 中,我看到的行为是具有“db_datareader”、“db_datawriter”和“db_ddladmin”的用户仍然需要被授予视图定义,才能通过右键单击并选择设计在 SSMS 中进行编辑。如果您尚未授予视图定义,则设计视图将以只读方式打开(带有警告)。

          见:MSFT Connect Bug

          对我来说,通过角色将视图定义权限分配给您的 ddladmin 用户似乎更容易发现,而不是像 Connect 解决方法中所述为特定用户帐户执行此操作。这将添加一个 db_definitionviewer 数据库角色:

          USE <DB Name>;
          CREATE ROLE db_definitionviewer;
          GRANT VIEW DEFINITION TO db_definitionviewer;
          EXEC sp_addrolemember 'db_definitionviewer', '<DOMAIN\group> | <DOMAIN\User>';
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-10-19
            • 1970-01-01
            • 1970-01-01
            • 2014-09-29
            • 2011-04-10
            • 2010-11-15
            • 1970-01-01
            • 2021-12-08
            相关资源
            最近更新 更多