sql >> Base de Datos >  >> RDS >> Sqlserver

La concesión de SQL se ejecuta en varios objetos

No puede usar comodines; debe otorgar cualquiera de ellos a todos. objetos (o todos los objetos en un esquema), o luego debe enumerar todos los objetos uno por uno.

Lo que podría hacer es algo como esto:haga que SQL Server genere esas declaraciones por usted:

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

Esta consulta enumerará todos los procedimientos que comienzan con XU y cree una columna que contenga GRANT EXECUTE ON .... declaración para ese procedimiento.

Ejecute esto en SQL Server Management Studio y luego simplemente copie el GrantCmd resultante columna, péguelo en una nueva ventana y ejecútelo allí.

Y si realmente desea automatizar esto, también puede convertir esta consulta en un cursor y luego usar SQL dinámico para ejecutar automáticamente los GrantCmd resultantes declaraciones....