我的公司使用多租户数据库(一个数据库,所有表都有一个customerID字段)。
我们正在建立一个数据仓库,并允许客户直接访问。我们对架构的最初想法是为每个客户创建一个模式,每个模式中都有视图,这些视图根据客户ID进行过滤。
即
dbo.Table1
模式1.表1(视图)从dbo.Table1中选择*,其中custId = '1‘
这是可行的,除非拥有schema1权限的用户也可以从dbo.Table1中进行选择。我想防止这种情况发生。
这有可能吗?
发布于 2011-07-08 21:53:30
是。只需授予您创建的用户,让他们只在视图上登录Server选择权限,而不是在表上登录。
实际上,您可以通过一个视图来完成所有这些。
创建一个基于用户名查找CustomerId的函数。然后调用该函数作为视图的一部分。
create view YourView as
select *
from YourTable where CustomerID = dbo.YourFunction(suser_sname())https://dba.stackexchange.com/questions/3735
复制相似问题