【发布时间】:2013-05-28 00:02:53
【问题描述】:
我有存储过程Topounce,它从动态表中获取最高记录并将其从 PC 中读出。当记录太多时,它会在
SqlDataReader dr2 = select.ExecuteReader()
目前大约有 750 条记录。我已经尝试过CommandTimeOut = 0,大约需要 10 分钟才能说出录音。有没有办法解决这个问题?
这里是错误:
超时。在操作完成之前超时时间已过或服务器没有响应。
代码:
try
{
using (SqlConnection connStr2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString))
{
//Selects top record from vwAnno
SqlCommand select = new SqlCommand("Topounce", connStr2);
select.CommandType = CommandType.StoredProcedure;
select.Parameters.AddWithValue("@ID", (string)Num);
connStr2.Open();
SqlDataReader dr2 = select.ExecuteReader(); // TIMES OUT HERE
//Reads record in vwAnnounce
while (dr2.Read())
{
//do work
}
dr2.Close(); //Close Datareader connection
connStr2.Close();
}
更新 这是存储过程。
USE [Queue]
GO
/****** Object: StoredProcedure [dbo].[TopRowViewAnnounce] Script Date: 06/01/2013 11:55:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[TopRowViewAnnounce]
@QueueID int
AS
BEGIN
SELECT TOP 1 id, qdate, ticket_number, QID, received, displaynum, station, transcodevoiced FROM vwAnnounce WHERE QID = @ID ORDER by received ASC
END
我做一个存储过程的原因是因为我认为它会帮助超时。我原来是这样的。
SqlCommand select = new SqlCommand("SELECT TOP 1 id, qdate, ticket_number, QID, received, displaynum, station, transcodevoiced FROM vwAnnounce WHERE QID = @ID ORDER by received ASC", connStr2);
select.CommandType = CommandType.StoredProcedure;
select.Parameters.AddWithValue("@ID", (string)Num);
connStr2.Open();
SqlDataReader dr2 = select.ExecuteReader(); // TIMES OUT HERE
我仍然没有得到解决方案。有人吗?
【问题讨论】:
-
能贴出存储过程代码吗? 750 条记录不算什么,它不应该那么慢。
-
这是正确的@SenadUka。 750 条记录不算什么。
-
在我看来
Topounce是真正的问题,而不是数据量 - 除非,也就是说,行包含大文本/二进制 blob(如: muchos muchos 字节)。Topounce需要多长时间才能正常运行?是否有可能受到来自 ADO.NET 代码的不同SET条件的影响(SET条件可以防止诸如持久化+计算+索引列之类的事情正常工作,强制进行表扫描而不是索引-寻找,例如) -
@MarcGravell,当我看到返回记录需要 10 分钟时,我知道使用存储过程进行查询优化的空间很大。我对 1000 万条记录表的查询大约需要 200 毫秒才能返回 1000 条记录。
-
尝试在 SQL Server Management Studio 中使用选项
SET STATISTICS TIME ON运行相同的查询,看看需要多长时间。
标签: c# sql winforms sql-server-2008 stored-procedures