【问题标题】:Show Right Column to Right User向正确的用户显示右列
【发布时间】:2012-07-08 20:50:15
【问题描述】:
如果我有三个不同职业的用户(经理、销售员、会计)
主要问题是如何在 SQL Server 中根据以下星型模式和要求向正确的人显示正确的列?
fact 和 dim 使用数据集市内的常规表格。
背景资料:
- 经理有权查看所有实际交易列
- 不允许业务员查看 TaxAmount、TotalAmount 和 ProductBusinessKey。
- Accounting 备注允许查看 Product Quantity、ProductPrice 和 GeographyFullname。
在 Windows 中,他们有自己的用户帐户。
图片取自地址(Design of a data warehouse with more than one fact tables)
【问题讨论】:
标签:
database
sql-server-2008-r2
business-intelligence
datamart
【解决方案1】:
SQL Server 确实能够分配列权限 (http://msdn.microsoft.com/en-us/library/ms180341%28v=sql.105%29.aspx)。您可以根据需要设置特定权限,将每列视为具有自己安全性的对象。
管理列级安全性可能很麻烦,因为您必须记住每次表更改和添加新用户时更新安全性。
您考虑采用不同的方法。为每个不同的组定义一个单独的视图。只有经理才能访问“经理”视图;只有推销员(也许还有经理)才能访问推销员视图等等。然后根据这些视图为每个组构建应用程序。
最后,管理多个视图可能有点麻烦。相反,您还可以有一个表值函数,将所有视图包装到一个函数中。该函数将检查每个用户的权限并选择要返回的适当数据。
用户定义函数的优点是只有创建函数的用户才需要访问基础表。即用户只有该功能的权限;否则,他们看不到基础表。该函数将控制他们可以看到的内容。