如何防止读取查询在加载过程中命中增量加载的表?

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

我在 SQL 事务中增量加载 6 个表。

每桌大约需要一分钟。我面临的问题是 - 当加载第一个表时,从第二个表开始的报告不会被阻止。因此他们获取不一致的数据。

我希望在进行 etl 加载时,6 个表中没有一个是可读的。显然,像我如何使用它这样的交易并不是解决方案。

我能做些什么来处理这个问题。

sql-server
1个回答
0
投票

阅读有关 updlock 的内容,但您很有可能需要在事务开始时对要拒绝用户访问的每个表执行 SELECT TOP 1 * FROM TN WITH (TABLOCKX, HOLDLOCK)。只有这样你才能开始加载它们。

第二个选项是启用 READ COMMITED SNAPSHOT 隔离级别。

如果我正确理解上下文的话,差不多就是这样了

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