.NET 到远程 SQL Server 在一台计算机上速度较慢,在另一台计算机上则不然

标签 .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 如果我在管理工作室中“包括实际执行计划”,则查询总是非常快,无论我执行的频率如何。

最佳答案

最后,经过几天的尝试各种不同的设置,甚至从头开始重新安装所有东西(包括 Windows),我以某种方式解决了这个问题。这是 - 我仍然不敢相信 - 网卡设置。我禁用了“IPv4 校验和卸载”、“大发送卸载 (IPv4)”、“TCP 校验和卸载 (IPv4)”和“UDP 校验和卸载 (IPv4)”。现在又好又快...

关于.NET 到远程 SQL Server 在一台计算机上速度较慢,在另一台计算机上则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7869824/

相关文章:

excel - 如何通过 ADO/ODBC 访问 Excel 命名表?

ado.net - 如何 : Use DataRelation to perform a join on two DataTables in a DataSet?

c# - 什么时候去静态类?

.net - 在 F#.net 中为特定代码块打开命名空间

sql - 在使用今天日期的 SQL 中获取星期日期(周一至周日)

.NET 表适配器 : Get vs. 填充?

c# - ASP.NET MVC 3 - 操作可能会破坏运行时的稳定性

c# - 如何使用 Entity Framework 将静态数据植入数据库?

mysql查询多列

mysql - 查询以检索总和大于其余列的前 2 列