【问题标题】:How can I increase connection timeout of SQL connectionstring? [duplicate]如何增加 SQL 连接字符串的连接超时? [复制]
【发布时间】:2017-02-23 23:22:23
【问题描述】:
private void button5_Click(object sender, EventArgs e)
{
    string filepath = textBox2.Text;
    string connectionString_i = string.Format(@"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""",
Path.GetDirectoryName(filepath));

    using (OleDbConnection connection_i = new OleDbConnection(connectionString_i))
    {
        connection_i.Open();

        OleDbCommand command = new OleDbCommand("Select * FROM [" + Path.GetFileName(filepath) +"]", connection_i);

        using (OleDbDataReader dr = command.ExecuteReader())
        {
            string sqlConnectionString = MyConString;

            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
            {
                SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
                bulkInsert.DestinationTableName = "Table in SQL DB";
                bulkInsert.WriteToServer(dr);
                MessageBox.Show("Upload to DB Successful!");
            }
        }
        connection_i.Close();
    }
}

现在我想读取包含大数据的文件并插入到 SQL 表中。问题是 SQL 连接超时只有 30 秒。 我想将 SQL 连接的超时时间增加到大约 2 或 3 分钟。

我该怎么做.. 请帮忙。 我正在将数据从 csv 文件上传到 SQL db。

谢谢。

【问题讨论】:

  • 这似乎“不是”需要更多时间,但连接本身有问题。尝试在批量命令之前关闭阅读器。
  • 您使用的是 MySQL 还是 MS SQL Server? (不要标记未涉及的产品。)

标签: c# mysql sql sql-server


【解决方案1】:

除了在您的 CONNECTION STRING 中设置连接超时,还有一个基于实际 SqlCommand 的超时。因此,您的连接超时可能为 3 分钟,但如果您的 SqlCommand 的默认超时为 30 秒,您的命令将首先超时。你可能想同时设置 BOTH

【讨论】:

    【解决方案2】:

    您可以增加SqlBulkCopy.BulkCopyTimeout 属性。默认为 30 秒。您还可以增加 SELECT 命令的OleDbCommand.CommandTimeout

    //set command timeout
     OleDbCommand command = 
         new OleDbCommand("Select * FROM [" + Path.GetFileName(filepath) +"]", connection_i);
     // 3 min
     command.CommandTimeout = 180;
    
    
     SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
     bulkInsert.BulkCopyTimeout = 180; // 3 min
     bulkInsert.DestinationTableName = "Table in SQL DB";
     bulkInsert.WriteToServer(dr);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      相关资源
      最近更新 更多