1

如果我有三个不同职业的用户(经理、推销员、会计)

主要问题是如何在 SQL Server 中根据以下星型模式和要求向正确的人显示正确的列?

fact 和 dim 在数据集市内使用常规表。

背景资料:

  • 经理有权查看所有列 factTransaction
  • 不允许业务员查看 TaxAmount、TotalAmount 和 ProductBusinessKey。
  • 会计记录允许查看 Product Quantity、ProductPrice 和 GeographyFullname。

在 Windows 中,他们有自己的用户帐户。

图片取自地址(多事实表的数据仓库设计

在此处输入图像描述

4

1 回答 1

2

SQL Server 确实能够分配列权限 (http://msdn.microsoft.com/en-us/library/ms180341%28v=sql.105%29.aspx)。您可以根据需要设置特定权限,方法是将每列视为具有自身安全性的对象。

管理列级安全性可能很麻烦,因为您必须记住每次表更改和添加新用户时都更新安全性。

你考虑一种不同的方法。为每个不同的组定义一个单独的视图。只有经理才能访问“经理”视图;只有推销员(也许还有经理)才能访问推销员视图等等。然后根据这些视图为每个组构建应用程序。

最后,管理多个视图可能有点麻烦。相反,您还可以有一个表值函数,将所有视图包装到一个函数中。该函数将检查每个用户的权限并选择要返回的适当数据。

用户定义函数的优点是只有创建函数的用户才需要访问基础表。即用户只有该功能的权限;否则,他们看不到基础表。该功能将控制他们可以看到的内容。

于 2012-07-08T22:36:21.923 回答