मुझे के। ब्रायन केली से जवाब पसंद आया, लेकिन मैं थोड़ी अधिक जानकारी (स्कीमा की तरह) चाहता था और साथ ही इसी अनुदान और रिवॉके स्टेटमेंट्स उत्पन्न करना चाहता था ताकि मैं उन्हें विभिन्न वातावरणों में लागू कर सकूं (जैसे देव/परीक्षण/प्रोड)।
ध्यान दें कि आप आसानी से प्रणाली वस्तुओं बाहर कर सकते हैं, टिप्पणी की देख जहां खंड
select
class_desc
,USER_NAME(grantee_principal_id) as user_or_role
,CASE WHEN class = 0 THEN DB_NAME()
WHEN class = 1 THEN ISNULL(SCHEMA_NAME(o.uid)+'.','')+OBJECT_NAME(major_id)
WHEN class = 3 THEN SCHEMA_NAME(major_id) END [Securable]
,permission_name
,state_desc
,'revoke ' + permission_name + ' on ' +
isnull(schema_name(o.uid)+'.','')+OBJECT_NAME(major_id)+ ' from [' +
USER_NAME(grantee_principal_id) + ']' as 'revokeStatement'
,'grant ' + permission_name + ' on ' +
isnull(schema_name(o.uid)+'.','')+OBJECT_NAME(major_id)+ ' to ' +
USER_NAME(grantee_principal_id) + ']' as 'grantStatement'
FROM sys.database_permissions dp
LEFT OUTER JOIN sysobjects o
ON o.id = dp.major_id
-- where major_id >= 1 -- ignore sysobjects
order by
class_desc desc
,USER_NAME(grantee_principal_id)
,CASE WHEN class = 0 THEN DB_NAME()
WHEN class = 1 THEN isnull(schema_name(o.uid)+'.','')+OBJECT_NAME(major_id)
WHEN class = 3 THEN SCHEMA_NAME(major_id) end
,permission_name
sp_helprotect एसक्यूएल 2005 और बाद में मान्य नहीं है। Http://msdn.microsoft.com/en-us/library/ms190310.aspx देखें –