Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

La concessione SQL viene eseguita su più oggetti

Non puoi utilizzare i caratteri jolly:devi concedere entrambi a tutti oggetti (o tutti gli oggetti in uno schema) - oppure devi elencare tutti gli oggetti uno per uno.

Quello che potresti fare è qualcosa del genere:chiedi a SQL Server di generare quelle istruzioni per te:

SELECT
   p.Name,
   GrantCmd = 'GRANT EXECUTE ON OBJECT::' + p.name + ' TO [domain\user]'
FROM sys.procedures p
WHERE p.Name LIKE 'XU%'

Questa query elencherà tutte le procedure che iniziano con XU e crea una colonna che contenga GRANT EXECUTE ON .... dichiarazione per tale procedura.

Eseguilo in SQL Server Management Studio, quindi copia semplicemente il GrantCmd risultante colonna, incollalo in una nuova finestra ed eseguilo lì.

E se davvero vuoi automatizzare questo, puoi anche trasformare questa query in un cursore e quindi utilizzare SQL dinamico per eseguire automaticamente quelli risultanti GrantCmd dichiarazioni....