【发布时间】:2021-09-27 09:41:23
【问题描述】:
我有一些代码
- 查看表 A 中的最大 ID
- 从表 B 中获取 ID > 表 A 中最大 ID 的记录
- 循环遍历需要添加的每条记录(这些是表 A 中的记录吗????)
- 在表 C 中查找与表 B 中的 ID 相关的所有记录,并将这些记录插入表 D。
由于某种原因,在获取和插入一些记录后,循环意外停止,没有出错。它在随机阶段停止。有时它会添加 20 条记录,有时 100 条,有时 1000 条以上。这与我的逻辑有关还是可能是服务器设置? Web 应用程序 .Net Framework 4.5,托管在 Windows 2019 Server 上。
这是我遵循的逻辑。我特别不添加代码,因为它非常复杂,我想我会分享我遵循的逻辑,而不是就为什么会发生这种情况获得一些建议。
GetNewRecords()
MaxIdA = Select max id in Table A
Select all records in Table B with id > MaxIdA
if reader has rows
While reader.Read
NextID = reader[0]
AddNewRecordToTableB()
Select all records in Table C where IdLink = NextID
if reader2 has rows
While reader2.Read
NewDetail = reader2[..]
AddNewRecordToTableD()
Connection2 Dispose
AddNewRecordToTableB()
Insert into TableB ….
AddNewRecordToTableD()
Insert into Tabled ….
【问题讨论】:
-
你做任何异常处理吗?如果没有,请添加异常处理。如果是这样,为了调试,请尝试重新抛出异常(例如:
throw ex;) -
听起来都可以在db中完成
-
您可以在单个 SQL 批处理中完成所有这些操作,无需在代码中循环
-
我会看看它是否内存不足或超时或类似情况。
-
@CaiusJard 我不确定如何在 SQL 中执行此操作。当记录添加到表 B 中时,有一个标识字段为输入的记录创建一个新的 id。我需要将此新 id 添加到表 D 中添加的记录中。表 B 是头文件,而表 D 具有表 B 中订单的详细信息行。
标签: c# asp.net sql-server