T-sql создать пользователя и предоставить выполнение с разрешения для хранимых процедур
У меня есть script, который создает базу данных, хранит procs, views, tables, udf. Я хочу включить script для создания пользователя user_1 и предоставить разрешение на выполнение в базе данных.
Я попытался выполнить команду create 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)
не работает. Он дает
неправильный синтаксис рядом с ';'.
Как я могу это решить?
Ответы
Ответ 1
Создать вход: создает вход на уровне сервера. Затем...
Создать пользователя: позволяет подключиться к вашей учетной записи. Затем...
Grant Execute To: предоставляет права на выполнение всех функций sp и функций в вашем db. Используйте "Grant Execute ON abc TO xyz", если вы хотите предоставить права только определенным sps.
Create login abacadaba with password='ABVDe12341234';
Create user abacadaba for login abacadaba;
Grant Execute to abacadaba;
Ответ 2
Вы пробовали:
CREATE LOGIN TestUser WITH PASSWORD = 'TopSecret'
GRANT EXEC ON MyStoredProc TO TestUser
вы также можете "СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ", если этого хотите.
Ответ 3
Имела точно такую же проблему, как и оригинальный пользователь, но для меня это были плохие символы, встроенные в TSQL, - я предполагаю, из какого источника он был вырезан и вставлен.
В любом случае, в зависимости от того, сколько пробелов у вас есть, просто удалите пробелы между словами и замените их регулярными пробелами.
Попробуйте все другие ответы до этого, это довольно маловероятно - я просто добавляю его, поскольку это было так расстраивающе, что у меня было 2 строки TSQL, которые выглядели идентичными выше/ниже друг друга, но в результате различные сообщения результатов, когда они выделены и запущены в Management Studio...
UPDATE: плохие символы были вставлены из Microsoft Lync