如何将 sql 权限授予与 dbo 不同的架构中的对象?

How do I grant sql permission to an object in a different schema as dbo?

这个

GRANT EXECUTE ON OBJECT::[test].[someTable] TO [MyUser] AS [dbo];

因错误而失败

Msg 15151, Level 16, State 1, Line 1 Cannot find the object 'someTable', because it does not exist or you do not have permission.

如果我删除 AS [dbo] 部分,它就可以正常工作。有人可以解释这是为什么以及删除 as dbo 部分的含义吗?

这适用于 SQL Server 2012

AS with GRANT - 指定一个主体,执行此查询的主体从中获得授予权限的权利(来自 MSDN)。 所以这意味着 [dbo] 没有在 SCHEMA [test] 上 GRANT 某些东西的权限。我认为您应该 运行 在查询之前这样做:

GRANT EXECUTE ON SCHEMA::[test] TO [dbo] WITH GRANT OPTION;