usp_tmp_copypermissions
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ORIGINALTABLE | nvarchar(max) | IN | |
@DESTINATIONVIEW | nvarchar(max) | IN |
Definition
Copy
create procedure usp_tmp_copypermissions ( @ORIGINALTABLE nvarchar(max), @DESTINATIONVIEW nvarchar(MAX) )
as
declare grants cursor local forward_only for
select
case minor_id
when 0 then
'grant ' + permission_name + ' on [dbo].' + @DESTINATIONVIEW collate database_Default + ' to [' + pr.name + ']'
else
'grant ' + permission_name + ' (' + c.name + ') on [dbo].' + @DESTINATIONVIEW collate database_Default + ' to [' + pr.name + ']'
end
from sys.database_permissions as pe
inner join sys.database_principals as pr on pr.principal_id = pe.grantee_principal_id
inner join sys.objects as o on pe.major_id = o.object_id
left outer join sys.columns as c on c.object_id = pe.major_id and c.column_id = pe.minor_id
where permission_name in('SELECT','UPDATE','INSERT') and o.name=@ORIGINALTABLE
declare @STMT nvarchar(max)
open grants;
fetch next from grants into @STMT;
while @@FETCH_STATUS = 0
begin
print @STMT;
execute (@STMT);
fetch next from grants into @STMT;
end;
close grants;
deallocate grants;