#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
Комментариев нет:
Отправить комментарий