未指定架构时授予命令有什么影响

What effect has a grant command when no schema is specified

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

USE MyDatabase
GO 

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

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

但是,他似乎没有任何架构的权限。所以我的问题是,上面的 GRANT 有什么影响,有什么方法可以对数据库中的每个 schema 授予 grant 权限(比如通配符)?

您可以使用以下查询找出授予了哪些权限:

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'

在这种情况下,权限是在整个数据库上授予的,这与在每个架构上授予这些权限是一样的。