Роль для доступа только для чтения для выполнения SP / получить набор результатов, без косвенного изменения БД - PullRequest
4 голосов
/ 16 марта 2011

Например

если указана учетная запись пользователя SQL Server только роль DataReader и возможность выполнения одной сохраненной процедура, которая изменяет данные в некоторых Кстати, если исполнение этого хранимая процедура по этой причине пользователя модификация произойдет?

В целом , я хочу предоставить только одному пользователю возможность чтения всей базы данных, включая использование синтаксиса SQL, Views и выполнение любых процедур хранения, которые возвращают наборы результатов. Но я не хочу, чтобы какие-либо побочные эффекты вызывали изменения в базе данных. Поэтому в вышеупомянутом примере хранимой процедуры попытка в идеальном случае приведет к ошибке, чтобы удовлетворить мое требование, и во всех аналогичных сценариях, где побочный эффект может вызвать изменение. Я хочу убедиться, что моя база данных защищена от них.

Это выполнимо просто на уровне ролей?

Продукт : SQL Server 2005 и выше

1 Ответ

0 голосов
/ 16 марта 2011

Конечно, вы можете сделать это. Просто создайте роль базы данных на уровне базы данных и предоставьте эту роль для чтения в таблицах и выполняйте только те хранимые процедуры, которые вы хотите (т.е. те, которые читают). Затем добавьте нужных пользователей в роль базы данных.

Однако, учитывая все обстоятельства, если вы используете хранимые процедуры для чтения данных, делайте это полностью и не разрешайте чтение таблиц пользователям любого уровня. Управляйте всем доступом к данным через хранимые процедуры (и представления).

РЕДАКТИРОВАТЬ: Только что заметил, что вы сказали SQL 2005 "и выше". Если вы используете SQL Server 2008, обратите внимание на роли приложений вместо традиционных ролей базы данных.

...