gpt4 book ai didi

c# - 请求运行失败,因为批处理被中止,这可能是由客户端发送的中止信号引起的

转载 作者:行者123 更新时间:2023-11-30 17:52:19 25 4
gpt4 key购买 nike

在我的程序中,我使用任务并行库来减少进程的时间。我使用此代码来完成工作。

Task[] tasks = new Task[10]
{
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 1 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 2 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 3 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 4 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 5 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 6 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 7 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 8 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 9 , (e.Argument as string[])[1])),
Task.Factory.StartNew(() => DoFiles(fullNum,NotFullNum, 10, (e.Argument as string[])[1]))
};

Task.WaitAll(tasks);

DoFiles() 方法处理一些文件,然后在数据库中的文件中插入单词。每个任务处理一些文件。我使用此代码插入数据库:

SqlBulkCopy sbc = new SqlBulkCopy(clsGlobal.cnTashih);
sbc.DestinationTableName = "tblListTekrari_3";
sbc.BulkCopyTimeout = 0;
sbc.WriteToServer(dtT);
sbc.Close();

当我运行程序时,有时会出现此错误:

Cannot access destination table 'tblListTekrari_3'.

System.Data

The request failed to run because the batch is aborted, this can be caused by abort signal sent from client, or another request is running in the same session, which makes the session busy.

at System.Data.SqlClient.SqlBulkCopy.WriteToServerInternal()
at System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServer(Int32 columnCount)
at System.Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable table, DataRowState rowState)
at System.Data.SqlClient.SqlBulkCopy.WriteToServer(DataTable table)
at tashih.frmStart.DoFiles(Int32 countFull, Int32 NotCountFull, Int32 part, String ProjectID)

谁能帮帮我?

最佳答案

使用并行批量复制将数据复制到特定分区

使用并行批量复制将数据并行复制到特定分区。并行批量复制大大提高了 bcp session 期间的性能,因为它可以将大型批量复制作业拆分为多个 session 并同时运行这些 session 。

使用并行批量复制:

  • 目标表必须分区。

使用 sp_helpartition 查看表上的分区数。

如果表尚未分区,请使用 alter table ... partition 对表进行分区。

  • 目标表不应包含索引,因为:

如果表有聚簇索引,这个索引决定了数据的物理位置,导致bcp命令中的分区规范被忽略。

如果存在任何索引,bcp 会自动使用其慢速批量复制模式而不是快速批量复制模式。

  • 如果表上存在非聚集索引,并行批量复制是可能导致索引页出现死锁。
  • 每个分区都应该驻留在一个单独的物理磁盘上以获得最佳效果表现。
  • 在将数据复制到数据库之前,对目标表进行分区包含数据。
  • 并行批量复制可以从多个操作复制到一个表系统文件。

对于所有类型的分区表,使用:

bcp 表名分区 partition_name in file_name

仅对于循环分区表,使用:

bcp 表名 partition_number in file_name

关于c# - 请求运行失败,因为批处理被中止,这可能是由客户端发送的中止信号引起的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18456561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com