Sql server 授予的对象是什么<;许可>;在SQL Server中?

Sql server 授予的对象是什么<;许可>;在SQL Server中?,sql-server,tsql,view,grant,Sql Server,Tsql,View,Grant,什么可以是[OBJECT::][schema_name]。中的对象名称 GRANT <permission> [ ,...n ] ON [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ] TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ] [ AS <data

什么可以是
[OBJECT::][schema_name]。中的对象名称

GRANT <permission> [ ,...n ] ON 
        [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
        TO <database_principal> [ ,...n ] 
        [ WITH GRANT OPTION ]
        [ AS <database_principal> ]
GRANT[,…n]ON
[对象::][schema_name]。对象名称[(列[,…n])]
到[,…n]
[具有授予选择权]
[作为]

它可能是一个表还是视图?

我不完全确定这是否是您要问的问题,但是这里的
对象::
关键字并不意味着要被某种标识符替换,例如
表::
,而是字面上指定为
对象:
。它用于表示您希望向对象授予权限,而不是模式。根据,对象是任何模式级别的安全对象,如表、视图、存储过程、序列等


同样根据该页面,如果指定了
schema\u name
,则
对象::
关键字是可选的。这使我相信,指定
对象::
的需要只是为了确保数据库是被授予权限的实体的类型,因为权限可以授予对象、模式、服务器原则等等。

这里的对象指的是sys.objects中存在的任何东西。从表面上看,这可能是其中的任何一种

  • 聚合函数
  • 检查约束
  • 标量函数
  • CLR_存储过程
  • CLR_表值函数
  • CLR_触发器
  • 默认_约束
  • 扩展存储过程
  • 外键约束
  • 内表
  • 计划指南
  • 主键约束
  • 复制\u过滤器\u过程
  • 统治
  • 序列对象
  • 服务队列
  • SQL\u内联\u表\u值\u函数
  • SQL\u标量函数
  • SQL\u存储过程
  • SQL\表\值\函数
  • SQL_触发器
  • 同义词
  • 系统表
  • 表格类型
  • 唯一约束
  • 用户表
  • 看法

请注意,并非每种权限对每种类型的对象都有意义。例如,不能向表授予执行权限。事实上,并非每种对象类型都可以成为授权的目标(例如,主键)。在每种安全类型的底部附近都有一个很好的列表,并链接到一个文档页面,说明可以授予它什么权限。

我猜是一个表、视图或数据库。因此在sql语句中,grant execute ON foo.Addresses to newAddresses-foo.Addresses是一个表吗?如果没有更多信息,就无法知道这一点
GRANT
语句不特定于表,仅适用于架构级对象。它可以是表、视图、序列或许多其他类型的对象。如果您想要的是一种从这些
GRANT
语句推断数据库模式的方法,恐怕这还不够。