.NET到远程SQL Server在一台机器上运行缓慢,而不是另一台机器

时间:2011-10-23 22:49:35

标签: .net sql ado.net dns vpn

我正在新安装的Windows 7桌面上开发.NET 4.0应用程序。在该应用程序中,对远程数据库的查询速度非常慢。同样的应用程序在我的笔记本电脑上运行得相当快,我已经用完了。我现在使用的桌面比笔记本电脑快很多。我正在使用VPN连接来连接远程数据库服务器(与笔记本电脑上的相同)。它在IIS和Cassini中都很慢。

我应该补充说,应用程序正在使用Entity Framework进行数据访问。

有谁知道问题可能是什么?

更新1: 好的,这真的很奇怪。我在笔记本电脑和台式机上查看了SQL Server Profiler中的查询。他们都是一样的。但是在我的桌面上,查询执行的时间越来越长。所以我在桌面上启动了Management Studio并执行了我从SQL Server Profiler中获取的查询。它运行得非常快(不到一秒钟)。但是当我再次执行它需要1秒钟。然后,2秒,然后是4(见模式?)。我不能为我的生活找出导致这种情况的原因。这是查询:

    select top (2) [Extent1].[RequestID] AS [RequestID], 
[Extent1].[RequestDate] AS [RequestDate], 
[Extent1].[RequestTitle] AS [RequestTitle], 
[Extent1].[RequestTypeID1] AS [RequestTypeID1], 
[Extent1].[RequestTypeID2] AS [RequestTypeID2], 
[Extent1].[SubjectMatterID1] AS [SubjectMatterID1], 
[Extent1].[SubjectMatterID2] AS [SubjectMatterID2], 
[Extent1].[ProviderID] AS [ProviderID], 
[Extent1].[Description] AS [Description], 
[Extent1].[Notes] AS [Notes], 
[Extent1].[RequestedBy] AS [RequestedBy], 
[Extent1].[OrganisationID] AS [OrganisationID], 
[Extent1].[ProgramID] AS [ProgramID], 
[Extent1].[StatusID] AS [StatusID], 
[Extent1].[MethodID] AS [MethodID], 
[Extent1].[StaffID] AS [StaffID], 
[Extent1].[TopicID] AS [TopicID], 
[Extent1].[RequestCreatedBy] AS [RequestCreatedBy], 
[Extent1].[RequestCreatedOn] AS [RequestCreatedOn], 
[Extent1].[RequestModifiedBy] AS [RequestModifiedBy], 
[Extent1].[RequestModifiedOn] AS [RequestModifiedOn], 
[Extent1].[RequestedByExtraID] AS [RequestedByExtraID]
FROM [dbo].[Request] AS [Extent1]

但是等等!它变得怪异!以下查询总是花费相同的时间(少于一秒),无论我多久执行一次:

select top (2) * From request

我浪费了大量的时间。如果有人有任何指示,你将永远在我的酷人书中。

更新2 如果我在管理工作室中“包含实际执行计划”,无论我多久执行一次,查询总是非常快。

4 个答案:

答案 0 :(得分:3)

最后,经过几天的尝试各种不同的设置,甚至从头开始重新安装所有东西(包括Windows),我以某种方式想出了问题。这是 - 我仍然无法相信这一点 - 网卡设置。我禁用了“IPv4 Checksum Offload”,“Large Send Offload(IPv4)”,“TCP Checksum Offload(IPv4)”和“UDP Checksum Offload(IPv4)”。现在它很好很快......

答案 1 :(得分:0)

嗯,我在我们的应用程序中经历过类似的事情。请注意,ManagementStudio结果可能会导致您得出错误的结论。连接上有一个参数ARITHABORT,默认情况下在MS中设置为ON,但是从你的应用程序中它默认为OFF。

<强>链接

SQL Server ARITHABORT

https://stackoverflow.com/questions/2465887/why-would-set-arithabort-on-dramatically-speed-up-a-query

答案 2 :(得分:0)

在数据库服务器上运行跟踪,并查看实际对其运行的实际SQL语句。我有一种感觉,你的EF生成差异SQL,而不是你在管理工作室。您可能需要对其进行优化。 VPN连接也可能是问题的一部分。

答案 3 :(得分:0)

同样的事情发生在我身上,我花了好几天试图解决它。从我的工作站到实体框架和ADO.NET到远程SQL Server的查询运行速度非常慢,但在所有其他开发人员的工作站上运行速度都很快。禁用Large Send Offload V2(IPv4)可以立即解决问题。