2014-01-27 33 views
0

我一直在尋找,但仍然沒有找到答案。通過T-SQL我正在查詢數據庫以獲取「用戶定義的表類型」。通過T-SQL查看錶格類型的權限

使用這個論壇上找到了查詢我能看到他們

select * 
from sys.types tp 
where is_user_defined = 1 

我想要得到的是鏈接到該對象的權限。任何人都可以幫助我嗎?

+0

我知道我沒有回答你的問題 - 但你顯然有一些權限問題。這可能有所幫助:http://billfellows.blogspot.com/2010/07/user-defined-table-type-permissions.html – MarkD

+0

@MarkD:感謝您的回覆,但我正在查詢數據庫所有者。 – Jeppen

回答

1

這將返回明確定義的權限(例如GRANT EXEC ON TYPE::dbo.mytype TO public;),但不會隱式授予(例如角色或組的成員)的權限。

SELECT [type] = QUOTENAME(s.name) + '.' + QUOTENAME(tp.name), 
    dp.[permission_name], 
    [principal] = p.name 
FROM sys.types AS tp 
INNER JOIN sys.schemas AS s 
ON tp.[schema_id] = s.[schema_id] 
INNER JOIN sys.database_permissions AS dp 
ON tp.user_type_id = dp.major_id 
AND dp.class_desc = N'TYPE' 
INNER JOIN sys.database_principals AS p 
ON p.principal_id = dp.grantee_principal_id 
WHERE tp.is_user_defined = 1;