小编fre*_*les的帖子

从C#运行时SQL查询超时,在SQL Server Management Studio中快速

我有一个C#程序,使用下面列出的代码执行SQL查询.我已经使用这段代码一段时间没有问题直到前几天.

我将查询字符串传递给SQL,其中包含字符串列表,这些字符串是库存标识符.几天前我运行它,查询超时,如果我让它运行一个多小时.我花了这么多天试图调试这个.在我的原始查询中,大约有900个标识符.

我已经尝试改变我能想到的一切,我得到的结果我无法解释.

例如:

  1. 查询使用一个股票列表,但不能使用字符串数和总长度相同长度的另一个列表

  2. 它适用于一个列表,但不能以相反的顺序使用相同的列表

  3. 如果只有900个标识符,那么它可以正常工作,但如果有899或901则不行,并且我可以包含或排除不同的标识符并获得相同的结果,因此它与其中一个标识符不同.

在每种情况下,我都捕获了我的程序传递的查询字符串并将其复制到SQL Server Management Studio中,并且在每种情况下,查询都会在1秒内运行.

我已经在这个和其他论坛上阅读了关于在SQL Server Management Studio中工作但在从程序运行时超时的所有内容,但这看起来有所不同,因为我可以找到失败的情况和类似的情况工作.

我希望看到我可能会看到可能会发生什么的建议.

using (SqlConnection conn = new SqlConnection(_connectString))
{
    conn.Open();

    using (SqlCommand cmd = new SqlCommand(queryString, conn))
    {
        cmd.Parameters.Clear();
        cmd.CommandTimeout = _timeout;

        SqlParameter param;

        if (parms != null)
        {
            foreach (string parm in parms.Keys)
            {
                param = cmd.Parameters.AddWithValue(parm, parms[parm]);
            }
        }

        SqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            QueryResult record = new QueryResult();
            record.Fields = new List<object>();

            for (int i = 0; i < returnColumns; ++i) …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server ado.net sql-server-2008

11
推荐指数
1
解决办法
2015
查看次数

标签 统计

ado.net ×1

c# ×1

sql ×1

sql-server ×1

sql-server-2008 ×1