Sql server 如何查找SQL Server表类型的权限?
希望这里有一个简单的问题: 如何获取SQL ServerSql server 如何查找SQL Server表类型的权限?,sql-server,permissions,user-defined-types,Sql Server,Permissions,User Defined Types,希望这里有一个简单的问题: 如何获取SQL Server表类型的权限 我知道如何授予他们(比如: GRANT [permission] ON TYPE::[schema_name].[type_name] TO [user] 根据 然而,我想知道的是,如何找出用户对特定表类型已经拥有的权限。我试着浏览了一些表,如INFORMATION\u SCHEMA.TABLE\u PRIVILEGES、sys.database\u permissions和sys.syspermissions,但我没有任何
表类型的权限
我知道如何授予他们(比如:
GRANT [permission] ON TYPE::[schema_name].[type_name] TO [user]
根据
然而,我想知道的是,如何找出用户对特定表类型已经拥有的权限。我试着浏览了一些表,如INFORMATION\u SCHEMA.TABLE\u PRIVILEGES
、sys.database\u permissions
和sys.syspermissions
,但我没有任何运气
我的猜测是,我可能遗漏了一些明显的信息,或者表类型的权限存储在其他地方。试试以下方法:
SELECT *
FROM sys.database_permissions a
JOIN sys.database_principals b on a.grantee_principal_id = b.principal_id
where major_id=object_id('dbo.TableNameHere')
您需要使用sys.table\u types中的用户\u type\u id来加入sys.database\u权限:
SELECT prmssn.*
FROM sys.table_types AS tt INNER JOIN sys.database_permissions AS prmssn ON prmssn.major_id=tt.user_type_id
WHERE tt.name='<Table-Type Name>'
AND SCHEMA_NAME(tt.schema_id)='<SchemaName>')
选择prmssn*
FROM sys.table_type AS tt internal JOIN sys.database_permissions AS prmssn ON prmssn.major_id=tt.user_type_id
其中tt.name=''
和SCHEMA_NAME(tt.SCHEMA_id)='')
我要找的不是表格,而是表格类型。不幸的是,尝试dbo.MyTypeName
不会返回任何结果。