1

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

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

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

我的问题是:

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

谢谢!

4

4 回答 4

1

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

于 2010-06-07T13:57:03.107 回答
1

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

于 2010-06-07T13:58:28.683 回答
1

如果用户是 db_ddladmin 的一部分,那应该不是问题。这只是一个警告

于 2010-06-07T13:59:13.270 回答
0

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

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

请参阅: MSFT 连接错误

对我来说,通过角色将视图定义权限分配给您的 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>';
于 2010-11-27T00:41:33.657 回答