Я хочу иметь возможность предоставить моему серверу базы данных SQL Server 2008 доступ только для чтения. В частности, две базы данных, одна из которых называется «живая», а другая - «этап».
По сути, ребята, получившие это имя пользователя и пароль, должны иметь возможность выбирать из любой из таблиц, но не выполнять какие-либо обновления, удаления или вставки. Конечно, они не должны иметь возможность выполнять операции DDL. Я, вероятно, мог бы избежать наказания, запретив им запускать сохраненные процессы, если бы мне пришлось.
Любой совет?
Под Безопасность > Логины, создайте новый логин и в Сопоставление пользователей отметьте две базы данных и для каждого выберите db_datareader ролевое членство.
Это обеспечит доступ для чтения ко всем данным в каждой БД.
Если вы хотите сделать это в скрипте, ГРАНТ команда - это то, с чего вам нужно начать.
Альтернативный подход - предоставить доступ к данным через хранимые процедуры, а не предоставлять им Читать разрешения на необработанные данные, предоставить их Выполнить разрешения для выбранных вами SProcs.
Последнее приукрашивание: если настройка этих разрешений затруднительна, вы можете создать свою собственную роль базы данных и назначить эти разрешения, как описано выше. Для каждого пользователя (сейчас и в будущем) вы можете просто назначить ему эту роль.
В идеале вы должны создать учетную запись группы Windows для доступа на чтение к этим базам данных - назначьте этой группе роль DATABASE db_datareader.