webForumDet fria alternativet

[DBNETLIB][ConnectionRead (recv()).]

4 svar · 452 visningar · startad av lenap

lenapMedlem sedan feb. 200520 inlägg
#1

Hej alla
Jag har under några år arbetat med utvecklingen av ett webb-baserat system för kompetensutveckling. Sidorna är skrivna i asp och databasen är SQL Server 2000.
Allt jag kan om sql-databaser har jag lärt mig "den hårda vägen" och nyligen började jag nosa på stored procedures eftersom jag har insett att det blir svårt att ha en stort system med avancerade funktioner och många samtidiga användare utan det. Men en tid efter att jag hade gjort om de flesta sql-funktionerna i SP och anpassat asp-koden "hänger sig" sidorna med ojämna mellanrum.
Sidan står och tänker och tänker och till slut får jag felmeddelandet:
--------------------------------------------------------------------
Microsoft OLE DB Provider for SQL Server error '80004005'
[DBNETLIB][ConnectionRead (recv()).]General network error. Check your network documentation.
--------------------------------------------------------------------
Kodraden felmeddelandet refererar till är exekveringen av första sql-frågan (inte en SP).
Felet kan uppstå på vilken sida som helst, ibland efter två sekunders användande, ibland efter två minuter.

Jag har sökt på felmeddelandet och bara fått tips om att installera om SQL Server, vilket jag inte kan göra eftersom det ligger på ett webbhotell. Har också mailat webbhotellet, men jag vet inte riktigt om det är deras grej. Jag har flera andra databaser hos dem som det inte är några problem med, där har jag heller inga SP... ASP-sidorna ligger på en dedikerad server (också hos webbhotellet).

Nu undrar jag om någon har stött på det här problemet, eller om ni har några förslag på vad jag ska göra, var jag ska läsa, vad jag ska kolla... Börjar bli smått desperat.

MVH
/Lena

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Bara en liten tanke...

Det är inte så att du glömmer att stänga dina connection-objekt?

lenapMedlem sedan feb. 200520 inlägg
#3

Det var det första jag kollade... =) Jag hade missat det på två ställen, men det har ju inte påverkat hela sajten.

Jag har kollat vidare lite och kommit fram till att sql-servern troligtvis blir överbelastad (det syns ingenting på webbservern eller nätverket) och ska fixa till några grejer i SP:arna. Men jag vet inte om det räcker.

Eftersom jag är ny på stored procedures undrar jag om det finns några generella prestanda-regler man ska komma ihåg. Några har jag redan hittat:
- skriv ut NOCOUNT ON om man inte behöve veta hur många rader som påverkades
- anropa SP:n med sp_executesql i stället för EXECUTE
- skriv alltid med sp-owner (och ev. db-namn) när sp:n anropas
Vet nån några fler?

Sen läste jag också att ett vanligt "hidden performance problem" är att prodecurerna rekompileras för ofta. Hur kan man kolla detta?

BrimbaMedlem sedan dec. 19995 875 inlägg
#4

En anledning kan vara om något tungt script körs på databasservern. Dock låter det inte så sannolikt eftersom (som jag tolkar det) det inte har varit problem tidigare innan du implementerade SPs.
Kontrollera gärna att du har satt den aktuella databasen som 'default database' för det kontot som du loggar in som, även om det inte bör ställa till det i detta fallet.

Hur ser din connection string ser ut?
Hur exekverar du dina SPs? Kan du ge kodexempel?

lenapMedlem sedan feb. 200520 inlägg
#5

Nuh har jag fått veta att det inte alls var mitt fel. Databasen fungerar jättebra och den är långt ifrån överbelastad. Däremot var det "nåt skit i kommunikationen mellan databasen och webbservern" fick jag veta av webbhotellet efter många påtryckningar. Jag ändrade en siffra i ip-numret för db-anslutningen och nu fungerar det hur bra som helst. Dessutom har jag fått en tok-optimerad databas och lärt mig massor på köpet.

Tack ni som har försökt hjälpa till!

132 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)