Thursday, July 10, 2014

Grant Missing Permissions to Functions



select *
from sys.schemas

select *
from sys.database_permissions

select *
from sys.objects
WHERE type_desc LIKE '%FUNCTION%'

select
       'GRANT ' +
       case when ObjectType in ('FT', 'FN') then 'EXECUTE' else 'SELECT' end
       + '  ON [' + SchemaName + ']' + '.' + '[' + ObjectName + '] TO [public]', *
from
(
select o.name as ObjectName, s.name as SchemaName, o.type as ObjectType
FROM sys.objects o
join sys.schemas s on o.schema_id = s.schema_id
--where xtype in (N'FN', N'IF', N'TF', N'FS', N'FT')
WHERE type_desc LIKE '%FUNCTION%'
and o.name not like '%twitter%'
) f
left join sys.database_permissions p on ObjectName = object_name(p.major_id)
where p.major_id is null