我们如何限制其他用户更改MDS中特定用户输入的记录

时间:2014-06-17 13:35:10

标签: sql-server master-data-services

我在MDS中创建了Product实体。 它具有以下值: 自行车1 ABC 车2 XYZ 周期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 个答案:

答案 0 :(得分:0)

请查看如何为MDS设置权限。

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

您可以为用户和/或群组设置权限。

我建议使用AD组分配权限,因为从长远来看这更容易保持。

如果您需要基于行的更复杂的权限概念,则可以使用派生层次结构设置权限。

权限设置也存储在MDSDB数据库的表中。如果您需要为许多用户设置权限,我建议使用代码来复制权限。如果需要,我可以提供一些片段。