授予指定列的同义词的选择
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了授予指定列的同义词的选择相关的知识,希望对你有一定的参考价值。
我一直在尝试限制用户对同义词的选择访问权限。请考虑以下内容:
CREATE USER Test_User WITHOUT LOGIN;
CREATE SYNONYM S_TEST FOR dbo.Items;
GRANT SELECT ON dbo.S_TEST (Id, [Name]) TO Test_User;
我收到一个错误:
Msg 1020,第16级,状态3,第4行子实体列表(例如列或安全性表达式)不能为实体级权限指定。
但是如果我将其更改为直接使用dbo.Items,那么它将起作用:
GRANT SELECT ON dbo.Items (Id, [Name]) TO Test_User;
如何将SELECT限制在指定用户的同义词上?这可能吗?如果没有,还有其他选择吗?
答案
“如何将SELECT限制在指定用户的同义词上?”您不能。同义词只是对象的替代名称。创建对象时,参考SYNONYM
not时将检查对象是否存在的检查推迟到运行时进行。例如,即使参考对象不存在,CREATE SYNONYM dbo.MySynonym FOR MadeUp.TableObject;
will也会创建同义词。
CREATE SYNONYM dbo.MySynonym FOR MadeUp.TableObject;
GO
SELECT *
FROM dbo.MySynonym; --fails
GO
DROP SYNONYM dbo.MySynonym;
GO
需要所有权限来设置同义词引用的对象,而不是同义词本身。
以上是关于授予指定列的同义词的选择的主要内容,如果未能解决你的问题,请参考以下文章