没有指定架构时,grant命令会产生什么影响

时间:2015-04-01 13:58:26

标签: sql sql-server tsql sql-server-2008-r2

基本上我尝试将数据库中所有模式的权限授予我之前创建的用户,如此

USE MyDatabase
GO 

GRANT INSERT, SELECT, EXECUTE, DELETE TO MyUser -- note that no schema is specified
GO

现在,效果相当混乱。根据SSMS MyUserMyDatabase具有以下有效权限:CONNECT,DELETE,EXECUTE,INSERT,SELECT。

但是,他似乎没有任何Schema的权利。所以我的问题是,上面GRANT的影响是什么?对数据库中的每个grant有任何方式schema权限(像通配符那样)?

1 个答案:

答案 0 :(得分:2)

您可以使用以下查询找出授予的权限:

SELECT d.*, OBJECT_NAME(major_id) AS ObjectName, SCHEMA_NAME(major_id) AS SchemaName 
FROM sys.database_permissions d 
INNER JOIN sys.database_principals u ON d.grantee_principal_id=u.principal_id 
WHERE u.name='MyUser'

在这种情况下,权限是在整个数据库上授予的,这与在每个模式上授予这些权限相同。