存储过程在DBML中超时,但在其他情况下是即时的

时间:2013-07-18 09:46:45

标签: c# sql sql-server linq-to-sql stored-procedures

我在SQL Server 2008 R2中编写了一个简单的存储过程,在SSMS中进行测试时会立即执行。但是,当我将它映射到LINQ2SQL(DBML)并在那里执行时,由于某种原因它会超时。

我没有丝毫从哪里开始......

编辑:其他所有工作(一般LINQ2SQL以及其他sprocs)。下面提到的sproc是新添加到DBML中的。

SPROC:

SELECT TOP 50 P.ID, t1.NAME
FROM P
INNER JOIN t1 ON P.ID = t1.ID
WHERE (P.ID <> @id) AND (P.ID2 = @id2) AND t1.NAME IN (
    select NAME from t1
    where ID = @id
)

C#:

    int id1,id2;
    using (var db = new DataContext())
    {
        foreach (var item in db.SPROC(ID1, ID2)) // Timeout exception here!
        {
            // code...
        }
    }

编辑#2:我已经将sproc更改为完全相同的代码,现在它可以工作了。我不确定是什么问题,但我认为这不是SQL Server的错。

0 个答案:

没有答案