Как мы можем ограничить другого пользователя, чтобы изменить запись, которая была введена конкретным пользователем в MDS

Я создал объект Product в MDS. Имеет следующие значения: Bike 1 ABC Car 2 XYZ Cycle 3 RRR

Владелец XYZ может изменить запись RRR. Но если владелец XYZ или любой другой владелец в этой организации попытался обновить запись ABC, доступ должен быть запрещен. Это означает, что никто не должен иметь права изменять записи, которые вводит ABC. для этого я выполнил следующее:

CREATE TRIGGER mdm.product_readonly
ON mdm.tbl_1034_1215_en 
AFTER UPDATE, INSERT AS
If exists (system_user!='ABC') 
and EXISTS (SELECT * FROM deleted a, inserted b, mdm.vw_product c
WHERE a.code=c.code
or b.code=c.code
And c.owner = 'ABC')
BEGIN
   ROLLBACK TRANSACTION
   RAISERROR ('Attempt to change a read-only row', 16, 1)
   RETURN
END

После выполнения этого, если я пытаюсь обновить запись как владелец ABC, я могу обновить все записи. Если я пытаюсь выполнить обновление как владелец ABC, я не могу обновить запись ABC. Но из MDS я не смог обновить ни одну запись. Это показывает, как ошибка базы данных.

Как мы можем достичь этого. Пожалуйста, помогите мне в этом отношении. Спасибо!

1 ответ

Решение

Пожалуйста, посмотрите, как установить разрешения для MDS.

http://msdn.microsoft.com/en-us/library/hh231026.aspx

Вы можете установить разрешения для пользователей и / или групп.

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

Если вам нужна более сложная концепция разрешений, основанная на строках, вы можете устанавливать разрешения, используя производные иерархии.

Настройки разрешений также хранятся в таблицах базы данных MDSDB. Если вам нужно установить разрешения для многих пользователей, я бы порекомендовал использовать код для копирования полномочий. Я могу предоставить некоторые фрагменты, если это необходимо.

Другие вопросы по тегам