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