Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Grant wird für mehrere Objekte ausgeführt

Sie können keine Platzhalter verwenden - Sie müssen allen eines zuweisen Objekte (oder alle Objekte in einem Schema) - oder Sie müssen alle Objekte einzeln auflisten.

Was Sie tun könnten, ist ungefähr Folgendes:Lassen Sie SQL Server diese Anweisungen für Sie generieren:

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

Diese Abfrage listet alle Prozeduren auf, die mit XU beginnen und erstellen Sie eine Spalte, die GRANT EXECUTE ON .... enthält Anweisung für dieses Verfahren.

Führen Sie dies in SQL Server Management Studio aus und kopieren Sie dann einfach den resultierenden GrantCmd Spalte, fügen Sie es in ein neues Fenster ein und führen Sie es dort aus.

Und wenn Sie wirklich Wenn Sie dies automatisieren möchten, können Sie diese Abfrage auch in einen Cursor umwandeln und dann dynamisches SQL verwenden, um die resultierenden GrantCmd automatisch auszuführen Aussagen....