1

我正在开发实现行级安全功能的多租户应用程序。另外,我想对一些具有安全策略的表执行一些基于文本的搜索。例如:按 SKU、描述和客户全名搜索,如下图所示。在 SP 内部,我使用此视图通过给定参数搜索内容。

我知道您不能在视图上创建索引,因为相关表具有安全策略。我的看法如下:

CREATE VIEW [dbo].[vwSales]
WITH SCHEMABINDING
AS
SELECT
  dbo.Sales.OrderId,
  dbo.Sales.SKU,
  dbo.Sales.Price,
  dbo.Sales.TenantId,
  dbo.Sales.Description,
  dbo.Sales.CustomerId,
  dbo.Customers.FName + ' ' + dbo.Customers.LName AS FullName
FROM dbo.Sales
INNER JOIN dbo.Customers ON dbo.Sales.CustomerId = dbo.Customers.CustomerId

GO

无法创建视图“dbo.vwSales”上的索引,因为该视图正在引用安全策略引用的表“dbo.Sales”。

从表中删除安全策略并将其添加到视图不起作用,因为很有可能从查询中访问表。所以我认为桌子应该有政策或者我错了。

是否有任何解决方法来满足这种真实情况?(当您在视图中连接多个表并创建索引时会发生这种情况。)

4

0 回答 0