Sql 阻止对用户的架构更改权限

Sql 阻止对用户的架构更改权限,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,我有一个用户(d2user),该用户的角色仅为读写。。因此,我们使用sp\u addrolemembersysproc添加了角色db\u datareader和db\u datawriter 但是,当我使用此用户登录时。。我能够更改此用户拥有的表架构 这是完美的工作,它不应该工作 ALTER SCHEMA guest TRANSFER dbo.TestData; GO 我试图通过以下方式限制它: REVOKE Alter any schema ON ROLE::db_datareade

我有一个用户(d2user),该用户的角色仅为读写。。因此,我们使用
sp\u addrolemember
sysproc添加了角色
db\u datareader
db\u datawriter

但是,当我使用此用户登录时。。我能够更改此用户拥有的表架构

这是完美的工作,它不应该工作

 ALTER SCHEMA guest TRANSFER dbo.TestData;
 GO 
我试图通过以下方式限制它:

 REVOKE Alter any schema ON ROLE::db_datareader FROM d2user CASCADE;

但是,如果我没有遇到语法错误,该用户仍然能够更改模式。。有人能帮助plss吗?

用户有更改权限,因为他们有以下权限之一:

  • 数据库管理
  • db_所有者
  • 系统管理员
您可以撤销ddl_admin,但其他两个将始终拥有更改内容的权限

您可以使用以下命令检查角色权限

EXEC sp_helprolemember; -- uses sys.database_role_members if you prefer to query this
EXEC sp_helpsrvrolemember;

用户没有系统管理员,但没有其他两个。如果我取消选中sysadmin,我甚至看不到数据库对象。。该节点不进行探索。通过sysadmin,它们可以完全控制SQL Server。如果删除此项,则他们有权仅查看您在数据库i removed sysadmin中使用“授予视图定义”授予他们的权限。已执行-将任何视图定义授予Publilc-但我看不到对象当我删除sysadmin时,数据库完全无法访问。我甚至不能查询表格