2011-08-15 25 views
2

是否有可以檢查用戶是否有權修改服務器上的任何對象的權限,而無需以該用戶身份運行查詢?用於獲取用戶的權限而不模仿的tsql

我需要創建一個登錄審覈報告,列出登錄時間有什麼東西在服務器上(服務器上的,即任何數據庫)中插入/更新訪問

這還需要不影響性能的賬戶(如果可能的話)或影響最小。

回答

1

this article

select sys.schemas.name 'Schema', sys.objects.name Object, sys.database_principals.name username, sys.database_permissions.type permissions_type, 
    sys.database_permissions.permission_name, 
    sys.database_permissions.state permission_state, 
    sys.database_permissions.state_desc, 
    state_desc + ' ' + permission_name + ' on ['+ sys.schemas.name + '].[' + sys.objects.name + '] to [' + sys.database_principals.name + ']' COLLATE LATIN1_General_CI_AS 
from sys.database_permissions 
join sys.objects on sys.database_permissions.major_id = 
    sys.objects.object_id 
join sys.schemas on sys.objects.schema_id = sys.schemas.schema_id 
join sys.database_principals on sys.database_permissions.grantee_principal_id = 
    sys.database_principals.principal_id 
order by 1, 2, 3, 5 

您想通過username過濾。請記住,這隻顯示明確定義的權限(並拒絕規則),而不是有效的權限。

+0

任何方式來拉有效的權限? – BoxOfNotGoodery

+0

這將是這個組合,以及通過組,模式等授予的任何權利。我不知道任何可以提供這些功能的盒子。希望這對你來說是一個不錯的起點。 – Yuck