Average 28000 requests/month












  /*****************************************************************************************
Created: 11/02/2005
By: Paul Ibison
Purpose: Script to produce publisher permissions for the subscription 'yyy':
******************************************************************************************/

SELECT   'Grant ' +
 case
  when action = 193 then 'SELECT'
  when action = 195 then 'INSERT'
  when action = 196 then 'DELETE'
  when action = 197 then 'UPDATE'
  when action = 224 then 'EXECUTE'
 end as Grant1, 
 ' ON [' + delivery.dbo.sysobjects.name + '] TO ' +
delivery.dbo.sysusers.name as Grant2
 --,ss.srvname
 --,delivery.dbo.syspublications.name AS Publication
FROM    delivery.dbo.syssubscriptions
 INNER JOIN delivery.dbo.sysextendedarticlesview ON
delivery.dbo.syssubscriptions.artid =
delivery.dbo.sysextendedarticlesview.artid
 INNER JOIN delivery.dbo.sysobjects ON
delivery.dbo.sysextendedarticlesview.objid =
delivery.dbo.sysobjects.id
 INNER JOIN delivery.dbo.syspublications ON
delivery.dbo.sysextendedarticlesview.pubid =
delivery.dbo.syspublications.pubid
 INNER JOIN master..sysservers ss on ss.srvid =
delivery.dbo.syssubscriptions.srvid
 left outer JOIN delivery.dbo.sysprotects on
delivery.dbo.sysprotects.id = delivery.dbo.sysobjects.id
 left outer JOIN delivery.dbo.sysusers on
delivery.dbo.sysprotects.uid = delivery.dbo.sysusers.uid
 where action in (193,195,196,197,224)
and srvname = 'yyy'
order by ss.srvname, delivery.dbo.syspublications.name,
delivery.dbo.sysobjects.name, delivery.dbo.sysusers.name

If you aren't interested in a particular subscriber, then this'll be simpler:

CREATE PROCEDURE spGetCPDBPermissionsatBT AS
SELECT   'Grant ' +
 case
  when action = 193 then 'SELECT'
  when action = 195 then 'INSERT'
  when action = 196 then 'DELETE'
  when action = 197 then 'UPDATE'
  when action = 224 then 'EXECUTE'
 end as Grant1,
 ' ON [' + delivery.dbo.sysobjects.name + '] TO ' +
delivery.dbo.sysusers.name as Grant2
FROM    delivery.dbo.sysextendedarticlesview
 INNER JOIN delivery.dbo.sysobjects ON
delivery.dbo.sysextendedarticlesview.objid = delivery.dbo.sysobjects.id
 INNER JOIN delivery.dbo.syspublications ON
delivery.dbo.sysextendedarticlesview.pubid =
delivery.dbo.syspublications.pubid
 left outer JOIN delivery.dbo.sysprotects on delivery.dbo.sysprotects.id =
delivery.dbo.sysobjects.id
 left outer JOIN delivery.dbo.sysusers on delivery.dbo.sysprotects.uid =
delivery.dbo.sysusers.uid
 where action in (193,195,196,197,224)
and delivery.dbo.sysusers.name not in ('RO','RW')
order by delivery.dbo.syspublications.name, delivery.dbo.sysobjects.name,
delivery.dbo.sysusers.name

 
 

April 2005