感觉我自己编写的程序,第一次执行的时候不论是登录还是获取sqlserver数据时,反应都非常迟钝。总要十几秒后才能获取数据。而且常常发生数据连接失败的错误。不过成功后,数据交换就非常迅速了。但一段时间没有使用程序后,再次执行又再次发生迟钝,只是不再发生数据连接失败。这样的情况是否正常?如果不正常,是Sqlserver设置错误还是C#语句使用错误?

解决方案 »

  1.   

    如果你的代码没有问题的话,第一次运行慢可能是
    1. .net运行时编译
    2. 创建连接通道
    3. SQLSERVER编译SQL语句的时间
    4. 首次使用SQLSERVER数据没有缓存
      

  2.   

    跟数据库、网络应该没有关系。基本上就是#4楼所说的第一条。你的程序一下子集中遍历了太多类型的数据,或者是你调用了太多、太乱的第三方框架类库,dot net动态调用这些类型的Assembly并且进行JIT处理也要一定时间。实际上复杂的业务应该异步执行,让负责显示的线程流畅地刷新界面。
      

  3.   

    另外当然,提高物理内存配置内CPU主频也是一个不错的办法。
      

  4.   

    感觉4比较象!要不然怎么解释,长时间不操作后再次执行会再次迟钝一下。是时间太久缓存被清空了吧!有对Sqlserver熟悉的达能指导一下是不是这样的?
      

  5.   

    登录窗口也是这样的,登录时需要的数据不多吧!可还是这样。只是慢还可以忍受,麻烦是常常连接失败。需要再次尝试才成功。我的常用获得数据的语句如下:        //读入Sql命令返回结果DataTable表。
            /// <summary>读入Sql命令返回结果DataTable表。</summary>
            /// <param name="sqlText">SQL语句字符串</param>
            /// <returns>返回结果表</returns>
            public DataTable Get_Table(string sqlText)
            {
                conOrder=@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\MooServer\MooServer\MooServer.mdf;Integrated Security=True;User Instance=True";            SqlConnection ConTable = new SqlConnection(conOrder);
                DataTable thisTable = new DataTable();
                try
                {                SqlDataAdapter thisAdapter = new SqlDataAdapter(sqlText;, ConTable);                thisAdapter.Fill(thisTable);
                }
                catch (SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
                return thisTable;        }我的机器是P4 2.0, vs2008, Sqlserver2005 Express
      

  6.   

    我也遇到过,应该是Sql数据缓存问题。其实你在sql中运行一个查询,第一次运行往往比较慢,而再运行就会很快了。
      

  7.   

    第一次慢是正常的,不过10S以上就要考虑下是不是SQL写的有问题了~~~