Reputation: 624
select 'GRANT '+permission_name+' ON ASSEMBLY::['+ sa.name +'] to
['+user_name(dp.grantee_principal_id)+'] ;' from
sys.database_permissions dp inner join sys.certificates sa on
sa.certificate_id = dp.major_id
Upvotes: 1
Views: 84
Reputation: 481
Maybe this will work.
select 'GRANT '+permission_name+' ON ASSEMBLY::['+ sa.name +'] to
['+user_name(dp.grantee_principal_id)+'] ;'
from sys.database_permissions dp inner join sys.certificates sa on
sa.certificate_id COLLATE DATABASE_DEFAULT = dp.major_id COLLATE DATABASE_DEFAULT
Upvotes: 0
Reputation: 15061
You need to add COLLATE DATABASE_DEFAULT
in the JOINS.
SELECT 'GRANT '+permission_name+' ON ASSEMBLY::['+ sa.name +'] to ['+user_name(dp.grantee_principal_id)+'] ;'
FROM sys.database_permissions dp
INNER JOIN sys.certificates sa ON sa.certificate_id COLLATE DATABASE_DEFAULT = dp.major_id COLLATE DATABASE_DEFAULT
Upvotes: 1