授予权限

Nic*_*ico 6 sql-server-2008

我有一个数据库角色、-login 和用户

CREATE LOGIN dummyLogIn WITH PASSWORD = 'dummyPassword', CHECK_POLICY = OFF;
CREATE USER dummyUser FOR LOGIN dummyLogIn;
CREATE ROLE "dummyRole";
Run Code Online (Sandbox Code Playgroud)

与角色相关的用户:

EXECUTE sp_addrolemember N'dummyRole', N'dummyUser';
Run Code Online (Sandbox Code Playgroud)

一切都很好。

现在我将 select WITH GRANT OPTION 授予指定表的组:

GRANT SELECT ON "dbo"."mytable" TO dummyRole WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)

仍然一切正常。如果我在 ssms 中查找角色的首选项,我会看到“dummyUser”是该角色的成员,并且该角色对 myTable 具有 SELECT 权限,包括授予选择的权限(两个复选框都在首选项窗口中进行了标记)

如果我尝试向另一个组授予选择权限,该权限肯定存在,我会收到一条错误消息(没有 15151):无法搜索对象“myTable”,因为对象不存在或必要的权限不存在。(错误消息是德语;))。

我可以轻松地在上述表格上进行选择 - 所以我假设该对象确实存在。在我看来,我应该能够向另一个组授予选择权限。

@附加:

引发错误的查询:

GRANT SELECT ON "dbo"."mytable" TO childDummyRole(以用户dummyUser登录)

childDummyRole 和引用对象的创建方式与上述对象相同:

CREATE LOGIN childDummyLogIn WITH PASSWORD = 'childDummyPassword', CHECK_POLICY = OFF;
CREATE USER childDummyUser FOR LOGIN childDummyLogIn;
CREATE ROLE "childDummyRole";
Run Code Online (Sandbox Code Playgroud)

与角色相关的用户:

EXECUTE sp_addrolemember N'childDummyRole', N'childDummyUser';
Run Code Online (Sandbox Code Playgroud)

小智 2

您收到该错误消息是因为dummyUser没有适当的权限。为了使该帐户向其他用户授予权限,您必须授予dummyUser安全权限。

GRANT 您可以查看此处的文档,了解所需的确切权限。