В проекте Access (ADP) с бэкэндом SQL, какие минимальные разрешения требуются для того, чтобы Access мог обновлять записи, возвращаемые из представления, привязанного к форме, и в то же время предотвращать прямое SELECT
в базовой таблице ? Например:
Таблица: Table1
Столбцы: ID, Column1, Column2, Column3, Column4
Просмотр: View1
SELECT ID, Column1, Column2, Column3 FROM Table1 WHERE Column1 = 'Something'
Как владелец базы данных или в роли db_owner
(или роли db_datareader
, db_datawriter
), записи могут обновляться через Access при привязке к представлению. Однако, если пользователь не является участником, запись не может быть обновлена через Access. Я предоставил SELECT
, UPDATE
на View1
и запретил SELECT
на Table1
и разрешил UPDATE
на Table1
(в случае, если UPDATE
в представлении не работает). Я также отказал от UPDATE
до Column1
, поскольку не хочу, чтобы пользователи обновляли этот столбец.
Если я подключусь к базе данных SQL (с SQL Server Management Studio) с этими установленными разрешениями, я могу обновить записи в представлении, но в Access не могу. Почему это? Я не знаю, какие запросы выдает Access для обновления записи, чтобы определить причину ее сбоя.
Edit:
До сих пор не выяснен способ выяснения, какие разрешения необходимы Access для выполнения UPDATE без SELECT. SQL Profiler не показал какой-либо очевидной причины сообщения «набор записей не обновляется».