我在 SQL 事务中增量加载 6 个表。
每桌大约需要一分钟。我面临的问题是 - 当加载第一个表时,从第二个表开始的报告不会被阻止。因此他们获取不一致的数据。
我希望在进行 etl 加载时,6 个表中没有一个是可读的。显然,像我如何使用它这样的交易并不是解决方案。
我能做些什么来处理这个问题。
阅读有关 updlock 的内容,但您很有可能需要在事务开始时对要拒绝用户访问的每个表执行 SELECT TOP 1 * FROM TN WITH (TABLOCKX, HOLDLOCK)。只有这样你才能开始加载它们。
第二个选项是启用 READ COMMITED SNAPSHOT 隔离级别。
如果我正确理解上下文的话,差不多就是这样了