Страницы

Поиск по вопросам

пятница, 13 марта 2020 г.

MSSQL. Создание группы с определенными правами

#sql_server #права #доступ


Необходимо дать права только на выполнение данной команды:

INSERT INTO table
SELECT *
FROM OPENROWSET(
    'MSDASQL',
    'Driver={Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)};DBQ=shara',
    'SELECT * FROM table2');


Т.е. что бы члены группы имели доступ только table, могли выполнять команду OPENROWSET
- не больше и не меньше.

Не подскажете как дать права правильно или где почитать? 

Заранее спасибо за Ваши ответы. 
    


Ответы

Ответ 1



Может быть вам подойдёт такой вариант. Заворачиваем команду в хранимую процедуру: create procedure [dbo].[ImportProc] with execute as 'UserName' -- тот у кого есть права на table и OPENROWSET as begin set nocount on; INSERT INTO [table] SELECT * FROM OPENROWSET(...); end далее создать роль, дать ей права на выполнение процедуры и добавить нужных пользователей в роль: USE [DBName] GO CREATE ROLE [data_import] GO GRANT EXECUTE ON [dbo].[ImportProc] TO [data_import] GO ALTER ROLE [data_import] ADD MEMBER [DataImporterUserName] GO Если нет, то для использования OPENROWSET нужно давать разрешение уровня сервера ADMINISTER BULK OPERATIONS соответствующему логину: USE [master] GO GRANT ADMINISTER BULK OPERATIONS TO [LoginName] GO Плюс в базе нужно отдельно разрешить вставку в таблицу: USE [DBName] GO GRANT INSERT ON [dbo].[table] TO [RoleName] GO

Комментариев нет:

Отправить комментарий