繁体   English   中英

执行插入事务时要获取所有用户表的行数

[英]To Get get all user tables row count when performing insert transaction

在此处输入图片说明

基本上,我要做的是在一个完整的事务范围中插入新数据(最终提交)之前获得所有表的行数,以我为例,它工作的是单个事务,但是当同时执行多个事务时不起作用。

我的第一笔交易同时执行第二笔交易查询操作以等待(获取所有行数)

此外,我尝试了IsolationLevel.ReadUncommitted,它不起作用

听起来您想要获得的是插入操作的运行进度。 这个对吗?

如果是这样,则问题是SQL Server进行了批量提交,因此您无法在提交完成之前访问它。 一种解决方法是将插入事务分成较小的批次,然后可以查询它们。 请记住,这是未经测试的伪代码,但是我过去使用WHILE LOOP做过类似的事情。

首先收集您的第一批记录以提交:

SELECT * FROM table // get your 100,000 records
INTO #holdingTable

然后根据说1,000的块创建一个while循环

DECLARE @totalCount int = 100000, @myCount int = 1000

WHILE (@myCount <= @totalCount)
BEGIN
   SELECT top 1000 Id from #holdingTable
   INTO #tempHolding

   INSERT #tempHolding INTO myTable

   DELETE #tempHolding FROM #holdingTable

   SET @myCount = @myCount + 1000
END

这个想法是将100,000条记录以1,000条为循环,插入它们,然后从临时表中删除插入的记录,以便您可以选择下一个1,000条。 类似于分页。 关键是随时删除它们,这样就不会多次插入相同的记录。

这不是最终的解决方案,但我希望这可以帮助您朝正确的方向发展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM