t-sql создать пользователя и предоставить выполнить на разрешение для хранимых процедур - PullRequest
10 голосов
/ 30 июля 2010

У меня есть скрипт, который создает базу данных, хранимые процы, представления, таблицы, udf.Я хочу включить скрипт для создания пользователя 'user_1' и дать разрешение на выполнение в базе данных.

Я пытался создать команду grant exec для всех сохраненных процедур

declare @permission varchar(max)

select @permission = COALESCE(
    @permission + '; ' + 'Grant Execute on ' + name +  ' user_1', 
   'Grant Execute on ' + name +  ' user_1')
from sysobjects where xtype in ('P')

exec (@permission)

Но exec (@permission) не работает.Это дает

неправильный синтаксис рядом с ';'.

Как я могу решить эту проблему?

Ответы [ 3 ]

24 голосов
/ 30 июля 2010

Создать логин: создает логин уровня сервера.Затем ... Создать пользователя: позволяет присоединить учетную запись к вашей базе данных.Затем ... Grant Execute To: предоставляет права на выполнение ВСЕМ SP и функциям в вашей БД.Используйте «Grant Execute ON abc TO xyz», если вы хотите предоставить права только определенным sp.

2 голосов
/ 30 июля 2010

Вы пробовали:

CREATE LOGIN TestUser WITH PASSWORD = 'TopSecret'
GRANT EXEC ON MyStoredProc TO TestUser

Вы также можете «СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ», если вы этого хотите.

0 голосов
/ 02 мая 2014

У меня была та же проблема, что и у оригинального пользователя, но для меня это были плохие символы, встроенные в TSQL - я предполагаю, из какого источника он был вырезан и вставлен.

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

Попробуйте все остальные ответы до этого, это маловероятно - я только добавляю его, так как это очень расстраивает, имея 2 строки TSQLкоторые выглядели идентичными выше / ниже друг друга, но приводили к различным сообщениям о результатах при выделении и запуске в Management Studio ...

ОБНОВЛЕНИЕ: плохие символы были вставлены из Microsoft Lync

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...