.NET към отдалечен SQL Server бавно на една машина, не на друга

Разработвам приложение .NET 4.0 на новонастроен десктоп с Windows 7. Заявките към отдалечената база данни са изключително бавни в това приложение. Същото приложение работи доста бързо на моя лаптоп, който използвах досега. Настолният компютър, който използвам сега, е много по-бърз от лаптопа. Използвам VPN връзка, за да се свържа с отдалечения db сървър (същия като на лаптопа). Бавно е както в 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 Ако „Включа действителен план за изпълнение“ в студио за управление, заявката винаги е много бърза, без значение колко често я изпълнявам.


person Stefan    schedule 23.10.2011    source източник
comment
Изглежда като проблем с мрежата/vpn. Ping също бавен?   -  person Tomas Voracek    schedule 24.10.2011
comment
Не, 40 мс. Студиото за управление също е доста бързо.   -  person Stefan    schedule 24.10.2011
comment
Как създавате връзки? ADO, Linq2SQL, EF, други? Стандартни заявки като select или SProcs?   -  person Tomas Voracek    schedule 24.10.2011
comment
EF. Както стандартни заявки, така и SP (чрез импортиране на функции).   -  person Stefan    schedule 24.10.2011
comment
Е, преживях нещо подобно в нашето приложение. Внимавайте, че резултатите от ManagementStudio може да ви доведат до неправилни заключения.   -  person Tomas Voracek    schedule 24.10.2011


Отговори (4)


Най-накрая, след дни на изпробване на всякакви различни настройки и дори преинсталиране на всичко (включително Windows) от нулата, някак разбрах проблема. Това бяха - и все още не мога да повярвам - настройките на мрежовата карта. Деактивирах „IPv4 Checksum Offload“, „Large Send Offload (IPv4)“, „TCP Checksum Offload (IPv4)“ и „UDP Checksum Offload (IPv4)“. Сега е хубаво и бързо...

person Stefan    schedule 28.10.2011
comment
Плъхове... Иска ми се да опитам тези настройки, но работя от лаптопа си през VPN и безжичната карта в тази машина няма тези настройки. - person MattSlay; 30.08.2016

Е, преживях нещо подобно в нашето приложение. Внимавайте, че резултатите от ManagementStudio може да ви доведат до неправилни заключения. Има параметър ARITHABORT при връзка, който по подразбиране е включен в MS, но от вашето приложение винаги е ИЗКЛЮЧЕН по подразбиране.

Връзки:

SQL Server ARITHABORT

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

person Tomas Voracek    schedule 23.10.2011
comment
Добре, но както казах: същото приложение работи много по-добре на моя лаптоп. - person Stefan; 24.10.2011

Пуснете проследяване на DB сървъра и вижте какви действителни SQL изрази всъщност се изпълняват срещу него. Имам чувството, че вашият EF генерира diff SQL от това, което имате в студиото за управление. Може да се наложи да го оптимизирате. VPN връзката също може да бъде част от проблема.

person Issa Fram    schedule 24.10.2011
comment
Отново, същото приложение работи много по-бързо на лаптоп, така че това не е проблем на студио за управление срещу приложение. - person Stefan; 24.10.2011

Същото нещо се случи и с мен и прекарах дни в опити да го разбера. Заявките от Entity Framework и ADO.NET към отдалечен SQL сървър от моята работна станция ще работят изключително бавно, но бързо на всички други станции на разработчиците. Деактивирането на Large Send Offload V2 (IPv4) веднага реши проблема.

person Todd    schedule 21.11.2014