Jas*_*tts 2 schema sql-server-2008 security
我公司使用的是多租户数据库(一个数据库,所有表都有一个customerID字段)。
我们正在建立数据仓库并为客户提供直接访问权限。我们对架构的最初想法是为每个客户创建一个架构,每个架构中的视图提供按客户 ID 进行过滤的视图。
IE
dbo.Table1
schema1.Table1 (View) Select * from dbo.Table1 where custId = '1'
这是有效的,除了具有 schema1 权限的用户也可以从 dbo.Table1 中选择全部。我想防止这种情况。
那可能吗?
是的。只需向您创建的用户授予仅对视图而非表的 SQL Server SELECT 权限即可。
您实际上可以通过一个视图完成所有这些工作。
创建一个根据用户名查找 CustomerId 的函数。然后将该函数作为视图的一部分调用。
create view YourView as
select *
from YourTable where CustomerID = dbo.YourFunction(suser_sname())
Run Code Online (Sandbox Code Playgroud)