C# SQL执行有时有效
我已经阅读了很多关于这个问题的答案,并且仍然在寻找解决方案。C ASP MVC4 Navicat SQL Server 2008是环境,应用程序是扫描仪标签制造商。以下语句在C中被称为参数化查询(稍微修改),是的,它应该在upc_code=itemnum的位置:C# SQL执行有时有效,c#,asp.net,sql-server,asp.net-mvc-4,C#,Asp.net,Sql Server,Asp.net Mvc 4,我已经阅读了很多关于这个问题的答案,并且仍然在寻找解决方案。C ASP MVC4 Navicat SQL Server 2008是环境,应用程序是扫描仪标签制造商。以下语句在C中被称为参数化查询(稍微修改),是的,它应该在upc_code=itemnum的位置: INSERT INTO MyTable1(ITEM, UPC, BRAND, DESC, SIZE, PRICE, DIST, SALEPRICE, LOC, LABEL, NEWPRICE, TAX, MARKUP, ALLDISC,
INSERT INTO MyTable1(ITEM, UPC, BRAND, DESC, SIZE, PRICE, DIST, SALEPRICE, LOC, LABEL, NEWPRICE, TAX, MARKUP, ALLDISC, DIST2, RECNUMBER, userID, HasBeenDownloaded)
OUTPUT Inserted.BRAND, Inserted.SIZE, Inserted.PRICE
SELECT TOP 1 I.ITEM, I.UPC, I.BRAND, I.DESC, I.SIZE, I.PRICE, V.DIST, I.SALEPRICE, @LOCATION, I.LABEL, I.NEWPRICE, I.TAX, I.MARKUP, I.ALLDISC, V.DIST2, @RECNUM, @userID, @HasBeenDownloaded
FROM MyTable2 I, MyTable3 V
WHERE I.UPC_CODE = @ITEMNUM AND V.ITEM_NUM = I.ITEM_NUM
每个用户大约扫描18次,每2秒扫描1次,然后服务器无限期挂起。即使我反复扫描同一项,表明它不是查询中的值,服务器也会挂起大约18个查询
C代码确实使用读取器而不是ExecuteOnQuery,但这只是因为我需要将输出注入到视图中:
using (IDataReader reader = theCmd.ExecuteReader())
{
while (reader.Read())
{
retVal.Add("Brand", reader["BRAND" ].ToString());
retVal.Add("Size", reader["SIZE" ].ToString());
retVal.Add("Price", reader["PRICE"].ToString());
break;
}
}
请记住,我没有SQLMS,我正在使用Navicat,是否有DBA可以指导我调试该问题?或者,是否有程序员有想法或更好的方法来检索SQL输出值?在您发布的代码中没有什么突出的地方。机器上的内存使用情况如何?你试过在调试器中运行它以查看它挂起的位置吗?你好,D Stanley,我想它可能是内存,所以我们又添加了2GB相同的结果。是的,它挂在读卡器上,也就是说,它是SQL Server响应,而不是VS2012。我们在GoDaddy上主持,但即使他们也没那么糟糕。这是一个半复杂的SQL插入,但我认为没有任何东西可以让系统与一个用户挂起。我想知道它是否可能是损坏的数据或模式或其他东西,但我没有数据库专业来诊断好吧,好吧,它神奇地开始工作了,所以我猜它是GoDaddy…谢谢大家