SQL语句的特定部分的含义是什么?

时间:2013-12-11 11:42:18

标签: sql sql-server

我们将sql server表的更改保留为TFS中的脚本。当我从SMSS获得更改脚本时,脚本底部会有一些行。这是;

select 
  Has_Perms_By_Name(N'dbo.MyTableName', 'Object', 'ALTER') as ALT_Per, 
  Has_Perms_By_Name(N'dbo.MyTableName', 'Object', 'VIEW DEFINITION') as View_def_Per,
  Has_Perms_By_Name(N'dbo.MyTableName', 'Object', 'CONTROL') as Contr_Per 

这条线的目的是什么?如果我从我的脚本文件中省略这一行是否重要?

2 个答案:

答案 0 :(得分:2)

查询使用内置函数HAS_PERMS_BY_NAME报告当前用户对目标对象的权限。

版本控制不需要它,因此您可以省略它。

答案 1 :(得分:1)

函数Has_Perms_By_Name(...)评估当前用户对表的权限。

语法为:

HAS_PERMS_BY_NAME ( securable , securable_class , permission  
[ , sub-securable ] [ , sub-securable_class ] )

  

安全:是安全的名称。如果安全性是服务器本身,则此值应设置为NULL。 securable是sysname类型的标量表达式。没有默认值。

     

securable_class:安全类的名称,用于测试权限。 securable_class是nvarchar(60)类型的标量表达式。

     

permission:sysname类型的非空标量表达式,表示要检查的权限名称。没有默认值。权限名称ANY是通配符。

     

sub-securable:sysname类型的可选标量表达式,表示针对其测试权限的安全子实体的名称。默认值为NULL。

     

sub-securable_class:nvarchar(60)类型的可选标量表达式,表示针对其测试权限的安全子实体的类。默认值为NULL。

函数的返回类型是int,如果当前用户具有指定的权限,则定义。

另外,请看一下这个link