在我的SQL2008中,我有一个位于“db_datareader”,“db_datawriter”和“db_ddladmin”数据库角色的用户,但是当他尝试使用SSMS修改表时,他收到一条消息说:
您未以数据库所有者或系统管理员身份登录。您可能无法保存对您不拥有的表的更改。
当然,我想避免这样的消息,但直到现在我确实找到了方法...... 因此,我尝试通过将用户添加到“db_owner”角色来修改用户,当然我没有上面的消息。
我的问题是:
谢谢!
答案 0 :(得分:1)
db_ddladmin固定数据库角色的成员可以在数据库中运行任何数据定义语言(DDL)命令。这可能只是来自SSMS的警告,尝试创建用户并尝试更改某些表
答案 1 :(得分:1)
我的理解一直是任何具有db_owner权限的用户都可以对数据库执行任何,包括删除它。当然,通过SQL 2005也是如此。我没有听到任何暗示这已经因SQL 2008而发生变化。
答案 2 :(得分:1)
如果用户是db_ddladmin的一部分,那应该不是问题。这只是warning
答案 3 :(得分:0)
这些确实是警告,我认为没有办法在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>';