首页 > 解决方案 > 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 行。我用谷歌搜索并研究并说极限int2,147,483,647. 然后int我认为 Turbo C 的限制或多或少32767。我有一个 Backgroundworker,但它只显示我做了多少循环

this.label1.Text = (int.Parse(this.label1.Text) + 1).ToString();

似乎是什么问题?

编辑:我收到的例外是循环已完成。与“僵尸交易”相同的错误。

此 SqlTransaction 已完成;它不再可用。

标签: c#sql-server

解决方案


smallint的限制是 32,767,所以我想您需要将列类型更改为更大的类型。


推荐阅读