【发布时间】:2015-05-26 05:13:26
【问题描述】:
我们有一个安静的大型 SQL Server 数据库(最大的表中大约有 3000 万行)。当我尝试在其上运行存储过程时,我遇到了一个奇怪的问题。如果我使用此代码,它就可以工作:
cmd = new SqlCommand("query", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "StoredProcedureName";
cmd.Parameters.Add("myParameter", myParameter);
cmd.CommandTimeout = 600;
DataTable table = new DataTable();
var restmp = cmd.ExecuteReader();
table.Load(restmp);
但如果我使用这个,它将永远运行:
cmd = new SqlCommand("query", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "StoredProcedureName";
cmd.Parameters.Add("myParameter", myParameter);
cmd.CommandTimeout = 600;
DataTable table = new DataTable();
table.Load(cmd.ExecuteReader());
这是什么原因造成的?
【问题讨论】:
-
你用完全相同的参数值调用它吗?
-
是的,当然。但是我尝试了很多不同的值。 (实际上我有多个参数。)每次我使用第一种方法时,它都会起作用,而每次我使用第二种方法时,它却不起作用。
-
您说它一直在运行,但它在哪里阻塞?
-
在'table.Load(cmd.ExecuteReader());'行。
-
是的,在每张桌子上。
标签: c# .net sql-server datatable datareader