将所有已定义的数据库权限授予用户

时间:2019-04-17 14:51:04

标签: sql-server

这是逐字询问的问题: 将对数据库cis605的所有已定义权限授予cis605_usr

我阅读了“ GRANT ALL”语法,并且仅授予适用于该对象(https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-object-permissions-transact-sql?view=sql-server-2017的ANSI-92权限。

如果运行此查询,我可以看到已经分配给用户的权限,但是我需要查看数据库权限:

SELECT DISTINCT pr.principal_id, pr.name, pr.type_desc, 
                pr.authentication_type_desc, pe.state_desc, 
                pe.permission_name 
FROM sys.database_principals pr
JOIN sys.database_permissions pe 
  ON pe.grantee_principal_id = pr.principal_id
WHERE pr.name = 'cis605_usr';

此查询返回权限,但看不到INSERT,UPDATE,DELETE,ect ...等权限名或数据库名称/ ID:

SELECT * FROM sys.database_permission;

如何找到所有数据库权限并将所有数据库权限授予用户?

1 个答案:

答案 0 :(得分:2)

INSERT,UPDATE,DELETE等是对象级权限,而不是数据库权限。您可以将用户分配给数据库角色(即db_owner,db_datawrite等),以在更高级别上授予这些权限。如果希望他们能够执行数据库中的所有操作,请为其分配db_owner权限。