【发布时间】:2010-11-21 06:44:52
【问题描述】:
我有一台带有 SQL2008 数据库和 IIS7 的服务器。我创建了一个 WCF 服务,它访问 SQL-Server 并以 List<T> 的形式返回结果集。
我的问题是,我在从客户端访问服务时遇到超时,尽管查询不应该花费太长时间(在 SQL 管理器中大约 1 秒)它会获取 17.256 行。
当我将查询限制为只读取十几行时,它运行良好:
SqlCommand command = new SqlCommand("SELECT stammDatenId, position, latitude, longitude FROM geoKoordinates ORDER BY stammDatenId, position", connection);
IDataReader reader = command.ExecuteReader();
int count = 0;
while (reader.Read())
{
GeoKoordinates geoKoors = new GeoKoordinates();
geoKoors.stammDatenId = reader.GetInt32(0);
geoKoors.position = reader.GetInt32(1);
geoKoors.latitude = reader.GetDouble(2);
geoKoors.longitude = reader.GetDouble(3);
resultSet.Add(geoKoors);
if (count > 10)
break;
count++;
}
reader.Close();
但正如您可能猜到的那样,我需要所有 17k 行。网络连接速度应该不是问题,因为服务器和我的客户端都在我们的局域网内,有 100 MBit 线路。从 SQL-Manager 将结果集保存到 csv 时,它只有 600 kb 大。
知道瓶颈可能在哪里以及如何解决这个问题吗?我不知道,代码的哪一部分可能与回答这个问题有关。如果您需要看一些特殊的部分,请在此处注明,我会提供。
【问题讨论】:
-
我试图将调用 WCF 的代码放在同一台服务器上,但是我得到了一个非常烦人的 CommunicationException: NotFound。没有单词 WHAT wcf not found 或 WHERE。无论如何要调试这个或获得有意义的错误消息?反正今天太热了,我的脉搏已经180了。我想我会休息一下,明天继续。感谢我在这里得到的所有帮助!
标签: c# sql-server wcf