在 SQL Server 上创建带有嵌套“无锁”的视图

问题描述 投票:0回答:2

场景如下:我有一些数据库模型,每天大约有 500K 新记录。数据库几乎从不更新(仅插入语句和删除)。

许多用户希望使用 PowerBI 等工具对数据库执行查询,但我没有向任何人授予任何访问权限以防止死锁(我只允许特定的 IT 管理资源访问数据)。

我想开放数据访问,但我必须防止任何人阻止新记录插入。

假设由于没有执行更新而没有创建脏读,我可以创建一个内部嵌套无锁的视图吗?

这是一个可以接受的设计吗?我知道这不是一个完美的解决方案,而且这并不意味着。

这是一种折衷方案,允许没有 SQL 技能的用户执行即席查询和查找。

我可能遗漏了什么吗?

sql sql-server business-intelligence sql-view
2个回答
0
投票

我认为你可以在查询中的表名前面使用“WITH (NoLock)”,例如:

SELECT * FROM [table Name] WITH (NoLock)

0
投票

我知道这是一个旧线程,但这对于 READPAST 来说是理想的选择...... 它将跳过锁定的行。不更新 不锁定现有行。如果你的假设是错误的,你会得到错误的结果

© www.soinside.com 2019 - 2024. All rights reserved.