Запланированное задание выполняет геокодирование с помощью сценария командной строки и поэтому ему необходимо получить доступ к некоторым данным (адресам в геокодирование), хранящимся в Microsoft SQL Server.Правильный и безопасный способ выбора подмножества данных из SQL Server
Данные относятся к схеме A и состоят из данных более чем из одной таблицы.
Я думал о
- создания входа в SQL Server, схемы и пользователя B
- создавая вид A.VIEW1 выбирающий из A.TABLE_X и A.TABLE_Y
- предоставление SELECT разрешение на A.VIEW1 К B
С просмотра ссылок другие таблицы, выбрав с B из A.VIEW1 бросает ошибку разрешения:
SELECT permission denied on object 'A.TABLE_X', database '...', schema '...'.
Есть ли альтернатива GRANT SELECT, на A .TABLE_X, A.TABLE_Y, ... TO B? Потому что, если я это сделаю, B может читать все данные из этих таблиц, не правда ли?
Я не хочу B, чтобы быть в состоянии сделать это, так как сервер учетных данных SQL для B будут храниться в незашифрованном виде на файловой системе или в планировщик задач. (Любая альтернатива?)
A.TABLE_X и A.TABLE_Y содержат данные о клиентах, связанных как номера банковских счетов и т.д. я мог бы ограничить GRANT к определенным столбцам, но я до сих пор не нравится эта идея.
Другой способ, чтобы заполнить временную таблицу, прежде чем с хранимая процедура A.PROC_FILL, но предоставление EXEC для В также будет не достаточно, не так ли?
Это не работает для меня. ** A ** может выбирать из _a.TABLE_X_. И ** A ** может выполнить exec_reportproc_. Но ** B ** (reportuser) не может выполнить после предоставления. – Mike
Мне нужно добавить, что есть еще одна базовая таблица ** C.TABLE_Z **, ** A ** может выбрать. – Mike
@Mike Что он говорит, когда вы пытаетесь с пользователем B? – podiluska