c# - SQL 查询在代码中超时,但在管理工作室中需要几秒钟

标签 c# sql-server asp.net-mvc entity-framework

我知道之前有人在这里问过类似的问题,还有一些与 Entity Framework 有关,但我没有找到任何适合我的问题。

我有一个遗留代码,它使用 Entity Framework 数据优先方法并调用存储过程;

var result = context.Database.SqlQuery<VoidEvent>("p_VoidEventSearchList @UserId, @EventTypeId, @StartDate, @EndDate, @ManagementArea, @ManagementArea2 "
                , new SqlParameter("@UserId", UserId)
                , new SqlParameter("@EventTypeId", EventTypeId)
                , new SqlParameter("@StartDate", Convert.ToDateTime(StartDate))
                , new SqlParameter("@EndDate", Convert.ToDateTime(EndDate).AddDays(1))
                , new SqlParameter("@ManagementArea", ManagementArea)
                , new SqlParameter("@ManagementArea2", ManagementArea2)
                ).ToList();
            return result;

这会引发超时错误,而如果我从探查器获取查询并在管理工作室中运行它,则只需 3 秒;

exec sp_executesql N'p_VoidEventSearchList @UserId, @EventTypeId, @StartDate, @EndDate, @ManagementArea, @ManagementArea2 ',N'@UserId nvarchar(36),@EventTypeId int,@StartDate datetime,@EndDate datetime,@ManagementArea nvarchar(4000),@ManagementArea2 nvarchar(4000)',@UserId=N'e91a860e-e04a-421c-8b0b-a4602aca1856',@EventTypeId=0,@StartDate='1753-01-01 00:00:00',@EndDate='9999-12-30 23:59:00',@ManagementArea=N'',@ManagementArea2=N''

存储过程参数为:

ALTER PROCEDURE [dbo].[p_VoidEventSearchList]
    @UserId NVARCHAR(40) = ''
    , @EventTypeId INT = 0
    , @StartDate datetime--nvarchar(10) = ''
    , @EndDate datetime--nvarchar(10)  = ''
    , @ManagementArea NVARCHAR(10) = ''
    , @ManagementArea2 NVARCHAR(10) = '' 
AS
BEGIN

由于某些帖子已经提示,我已确保数据时间作为日期时间而不是字符串传递,但这没有帮助,调用仍然超时。

最佳答案

SQL Server management studio 和您的应用程序以不同的方式连接到 SQL Server。 我会检查您的 .net 应用程序中的连接字符串,看看是否有任何时髦的连接选项。此外,您的应用程序解析 SQL 服务器所采用的网络路由也可能是超时的原因。

关于c# - SQL 查询在代码中超时,但在管理工作室中需要几秒钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32504030/

相关文章:

asp.net-mvc - MVC-mini-profiler 和 Linq-2-SQL

c# - 从非抽象类派生抽象类

sql-server - SQL Server 2005 中 'CREATE USER' 所需的权限?

sql-server - tablix 'Tablix1' 无效。缺少 DataSetName 属性的值

sql-server - SQL Server 2008 SCOPE_IDENTITY() 问题

c# - 测试接口(interface)存储库

javascript - Bing map 与 ASP.NET MVC 4.5 集成

c# - 接口(interface)继承和抽象方法覆盖

C# Web 浏览器控件 : Navigating to a List to URLs

c# - SQLite + SpatiaLite 问题