运行INSERT INTO SQL语句时超时已到期

时间:2016-09-26 01:10:54

标签: c# sql .net sql-server

我想使用SQL INSERT INTO语句插入数据,但会发生错误超时过期。任何人都可以帮助我。 Thanxs。代码是这样的。

SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["IMS"].ConnectionString);                
            SqlCommand sqlCom = new SqlCommand();
            sqlCom = sqlConn.CreateCommand();                

            var strField = new List<string>();
            var strVal = new List<string>();                

            if (this.Row.TriggerEntityID != null)
            {
                sqlCom.Parameters.AddWithValue("@EntityId", this.Row.TriggerEntityID);
                strField.Add("EntityID");
                strVal.Add("@EntityId");
            }

            if (this.Row.TriggerProjectID != null)
            {
                sqlCom.Parameters.AddWithValue("@ProjectId", this.Row.TriggerProjectID);
                strField.Add("ProjectID");
                strVal.Add("@ProjectId");
            }

            sqlCom.Parameters.AddWithValue("@EngagementId", this.Row.Id);

            string[] arrField = strField.ToArray();
            string[] arrVal = strVal.ToArray();

            string fld = arrField[0];
            string val = arrVal[0];
            for (var j = 1; j < arrField.Length; j++)
            {
                fld = fld + "," + arrField[j];
                val = val + "," + arrVal[j];
            }                

            sqlCom.CommandText = "INSERT INTO Engagement_Project_Entity (EngagementID, " + fld + ") VALUES (@EngagementId, " + val + ")";

            sqlConn.Open();
            sqlCom.ExecuteNonQuery();
            sqlConn.Close();    

我错过了什么吗?或者序列错了?

1 个答案:

答案 0 :(得分:1)

如果在查询执行期间遇到超时异常,则会清楚地显示您的C#代码设法将查询传递给数据库,并且数据库尝试执行查询,但无法在超时之前完成执行。

因此,我将采取一些故障排除步骤。

  1. 首先确保您获得的超时是执行超时 而不是连接超时。如果是连接超时,则表示此时无法访问SQL Server。如果是查询执行超时,请按照以下步骤找出导致查询超时的确切原因。
  2. 使用SQL Server Profiler(从SQL Server Management Studio的“工具”菜单)查找在执行此代码时触发的确切查询。
  3. 检查代码是否生成了太多的fld和value对。
  4. 尝试从SQL Server Management Studio执行相同的查询,并查明超时是否可重现。如果您从SQL Server获得相同的问题 管理工作室也可以修复查询。