SqlDataAdapter填充DataSet超时

4

我正在通过存储过程从SQL中提取数据。

在我的SQL查询窗口中,执行需要43秒。

但是,当我通过C#执行相同的存储过程时,无法在5分钟内获得响应。

我正在使用SqlDataAdapter。

    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        {
            DataSet ds = new DataSet();

            // Fill the DataSet using default values for DataTable names, etc
            da.Fill(ds);

            // Detach the SqlParameters from the command object, so they can be used again
            cmd.Parameters.Clear();

            if (mustCloseConnection)
                connection.Close();

            // Return the dataset
            return ds;
        }

请帮助我。


你如何创建cmd对象? - Steve B
执行查询后返回了多少行? - cuongle
@SteveB 我正在使用 SQLHelper 类。你可以从这个链接中获取 http://www.koders.com/csharp/fid5F6557C27DD01854BC85719A8B8A25A468393A08.aspx - Lajja Thaker
500不算多,为什么要花43秒呢? - cuongle
@CuongLe 我正在获取TempTable中所有的数据,例如(#tmp),然后使用一些逻辑来更新该表,这是一个非常大的SP,同时我在SP中的Select命令中使用了函数。 - Lajja Thaker
显示剩余3条评论
1个回答

0

你的 DateTimePicker 格式为:dd/MM/yyyy。

标准 SQL 日期格式为:MM/dd/yyyy。

在你的存储过程中使用这个格式:

myDateTimePicker.Value.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)

我非常怀疑这不是问题的原因。 - Icarus
@Icarus:当我第一次阅读这个问题时,我想到了参数嗅探,但是Lajja进一步调查了这个问题,发现存储过程参数存在问题。这就是为什么我删除了我的第一个答案并回复来纠正他的真正问题。问候。 - LaGrandMere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接