0

我在 MDS 中创建了 Product 实体。它具有以下值: 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 我无法更新任何记录。它显示像数据库错误。

我们怎样才能做到这一点。请在这方面帮助我。谢谢!

4

1 回答 1

0

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

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

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

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

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

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

于 2014-06-18T09:50:46.443 回答