2012-12-24 2 views
4

Привет всем Я хочу добавить права выполнения для пользователя для нескольких объектов. Но я не могу добавить в свой код подстановочные знаки.Выполнение гранта SQL для нескольких объектов

GRANT EXECUTE ON OBJECT::dbo.CREATESERVERSESSIONS TO [domain\user]; 

это работает, но у меня есть много хранимых процедур, которые начинаются с XU_ теперь я хочу предоставить выполнение всех хранимых процедур, которые начинаются с XU_

GRANT EXECUTE ON OBJECT::dbo.XU_* TO [domain\user]; 

но это не работает. Надеюсь, кто-то знает об этом. Заранее спасибо.

+1

Вы не можете использовать подстановочные знаки - у вас есть предоставить либо ** всем ** объектам (или всем объектам в схеме), либо затем вы должны перечислить все объекты по одному –

+0

oh, что будет сосать ... но хорошо спасибо за ответ – Chino

ответ

6

Вы не можете использовать подстановочные знаки - вы должны предоставить либо все объекты (или все объекты в схеме), либо вы должны перечислить все объекты по одному.

Что вы могли бы сделать что-то вроде этого - есть SQL Server генерировать эти заявления для вас:

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

Этот запрос будет список всех процедур, которые начинаются с XU и создать столбец, который содержит GRANT EXECUTE ON .... заявление о том, что процедура.

Запустите это в SQL Server Management Studio, а затем просто скопируйте полученный столбец GrantCmd, вставьте его в новое окно и выполните его там.

И если вы действительно хотите автоматизировать этот процесс, можно также включить этот запрос в курсор, а затем использовать динамический SQL автоматически выполнять эти результирующие GrantCmd заявления ....

+0

Спасибо, это будет работа отлично :) – Chino

+1

Простой, но блестящий. – 5arx