我们将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
这条线的目的是什么?如果我从我的脚本文件中省略这一行是否重要?
答案 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