2015-08-07 5 views
0

Я использую SQL Server 2012.конкретные разрешения для таблицы на основе пользователя

У меня есть таблица, которая содержит два столбца. Один из них называется Directory, другой UserName.

Чтобы объяснить мою проблему, я думаю, что простой пример проще.

У этой таблицы 3 пользователей. В столбце UserName могут быть введены только 3 пользователя, имена пользователей и еще одна запись, называемая Default.

Directory  UserName 
C:\Blah  Bob 
C:\BlaF  Brad 
C:\BlaK  Dave 
C:\BlaPP  Default 
C:\Anoth  Default 

То, что я хотел бы знать, если это возможно разрешить только два из пользователей, чтобы иметь возможность добавлять, удалять записи с именем Default и другим пользователем, чтобы иметь возможность выбрать только записи с Default.

Возможно ли это?

Update

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

+2

Это невозможно с прямым доступом к таблице. Но его можно управлять с помощью представлений и хранимых процедур. –

+0

Возможно также с триггерами. –

+2

@LeBarton - Не требование SELECT. –

ответ

1

Вместо того, чтобы предоставлять пользователям прямой доступ к таблице, дайте первым двум пользователям доступ к хранимой процедуре, которая вставляет в таблицу, и вставляет только «Default» для имени пользователя.

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

Смежные вопросы