c# - C# & SQL Server:在事务中插入 32,765 条记录时卡住了
问题描述
我似乎明白发生了什么,但我真的迷路了。我在 Visual Studio、Winforms、C# 中有一笔交易
using (SqlConnection connection = new SqlConnection(Program.connectionString))
{
connection.Open();
SqlTransaction processTransaction = connection.BeginTransaction();
try
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
...
}
processTransaction.Commit();
processTransaction.Dispose();
MessageBox.Show("Success");
}
catch (SqlException ex)
{
Console.WriteLine(ex.Message);
processTransaction.Rollback();
processTransaction.Dispose();
}
}
问题是:我正在插入和循环一个包含 93'000 行的数据集,或多或少,但它停止在 32,765 行。我用谷歌搜索并研究并说极限int
是2,147,483,647
. 然后int
我认为 Turbo C 的限制或多或少32767
。我有一个 Backgroundworker,但它只显示我做了多少循环
this.label1.Text = (int.Parse(this.label1.Text) + 1).ToString();
似乎是什么问题?
编辑:我收到的例外是循环已完成。与“僵尸交易”相同的错误。
此 SqlTransaction 已完成;它不再可用。
解决方案
smallint的限制是 32,767,所以我想您需要将列类型更改为更大的类型。
推荐阅读
- lua - Roblox Studio 我的脚本只能运行一次
- google-sheets - 计数值在范围内增加的次数 - Google 表格
- node.js - 任何人都可以引导我朝着正确的方向前进,让这个 Azure 函数在它输出“无法找到模块'@azure/functions'的地方?
- concatenation - Libreoffice calc 连接单元格内容和括号
- javascript - 如何在使用 driver.js 创建的弹出框上使用 MathJax?
- javascript - 如何创建一个按钮来更改 Vue.js 中的数组位置?
- node.js - 在 Typeorm SQL 中使用 Node、Express、JWT 重置密码
- json - 我需要帮助了解如何处理涉及代理对的 JSON \u 转义
- javascript - 如何通过电子邮件发送联系我们 HTML 页面详细信息
- python - python DataFrame比较使用熊猫