[mssql/asp] General Network Error

Pagina: 1
Acties:
  • 306 views sinds 30-01-2008
  • Reageer

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Ik krijg in een vrij triviale situatie deze error op mssql2000 draaiend op win2k server:
code:
1
2
3
Microsoft OLE DB Provider for SQL Server error '80004005'

[DBNETLIB][ConnectionRead (WrapperRead()).]General network error. Check your network documentation.


ipv WrapperRead() heb ik ook write() en recv() langs zien komen. Dat is dus redelijk random. Ik heb deze fout al vaker gezien, maar hij was nooit zo reproduceerbaar als nu. Ik krijg em nu in 100% van de gevallen. Wanneer? Alleen bij dit stukje code:
ASP:
1
2
3
4
5
6
7
Dim Live
Live = ExecuteSQLSingleResult(FormatSqlQuery("EXEC template_is_live {0}, {1}", Array(Pin, TemplateType)))
If IsNull(Live) Then Live = True
SqlConn.Execute FormatSqlQuery("EXEC update_template {0},{1},{2},{3}", Array(Pin, TemplateType, Live, Template))
If Live Then
   Logger.AddTemplateChange Pin, TemplateType
End If

Hij doet in de eerste SP een SELECT, vervolgens een UPDATE van een tabel en tot slot een doodnormale INSERT in een logging tabel.

Mijn connectionstring is als volgt:
code:
1
Provider=SQLOLEDB;Server=servernaampje;Database=databaseje;uid=gebruikertje;pwd=wachtwoordje;Network Library=dbmssocn

Niks speciaals dus. Ik heb ook al geprobeerd CommandTimeout van de connection te zetten op 10, maar dat helpt niet. Ook connection pooling uitzetten door OLE DB Services=-2 aan de connectionstring toe te voegen, helpt niets.

日本!🎌


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 06:52
Een general network error houdt in dat de DB simpelweg niet bereikbaar is. Wachtwoord etc klopt allemaal? Kijk anders hier even (overigens 2 sec werk op google)

Roomba E5 te koop


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Dat vind ik nou weer jammer. Lees aub m'n post nog even door. De error komt alleen na die code, dus nergens anders. En de database is wel degelijk bereikbaar, want ik heb zelfs een profiler open staan en die werkt prima. Sterker nog, die "EXEC template_is_live" zie ik in de profiler langskomen, dus pas daarna gaat ie op z'n gat. Is de database dan bereikbaar of wat?

"oplossingen" via Google en de MSKB uiteraard allang geprobeerd. De quickstart zegt immers dat je eerst zelf moet zoeken ;)

[ Voor 43% gewijzigd door _Thanatos_ op 06-07-2005 12:36 ]

日本!🎌


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Zie je EXEC update_template ook voorbij komen?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 06:52
Als het alleen na die code voorkomt, post dan ook de inhoud van die code even. Misschien dat daar iets relevants in staat.

Roomba E5 te koop


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
update_template wordt volgens de profiler niet uitgevoerd, dus alleen template_is_live lijkt me relevant. De inhoud daarvan is ook vrij triviaal:
SQL:
1
2
3
4
5
6
CREATE PROCEDURE template_is_live @PIN int, @Type char(4)
AS
SELECT TOP 1 Live
FROM _Templates
WHERE Type=@Type AND PIN=@PIN
ORDER BY Live


Net als ExecuteSQLSingleResult:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
Function ExecuteSQLSingleResult(SQL)
   Dim RS, Ret
   Set RS = SqlConn.Execute(SQL)
   If Not RS.EOF Then
      Ret = RS.Fields(0).Value
   Else
      Ret = Null
   End If
   RS.Close
   Set RS = Nothing
   ExecuteSQLSingleResult = Ret
End Function


En het aanmaken van SqlConn is ook niets bijzonders:
ASP:
1
2
3
Dim SqlConn
Set SqlConn = Server.CreateObject("ADODB.Connection")
SqlConn.Open ConnectionString


offtopic:
bah wat een vieze kleurtjes in die sql code

日本!🎌


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Als update_template volgens de profiler niet wordt uitgevoerd, lijkt het me dat die regel de foutmelding genereert. Comment die regel eens weg?
Gebruik je in ExecuteSQLSingleResult exact dezelfde connectiegegevens als in SQLconn?

offtopic:
Je kunt in je voorkeuren zelf kiezen voor een kleurenschema. De ideale zit er niet bij, maar misschien zit er 1 bij die meer aan je wensen voldoet?

[ Voor 27% gewijzigd door P_de_B op 06-07-2005 13:19 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 06:52
In .net is het zo dat je na elke actie je db connectie moet sluiten. Weet niet of dit in classic asp ook zo is?

Roomba E5 te koop


Verwijderd

sig69 schreef op woensdag 06 juli 2005 @ 13:20:
In .net is het zo dat je na elke actie je db connectie moet sluiten.
Het moet niet, maar wordt wel aangeraden: "Open database connections late and close them early". Anders heeft connection pooling nl. niet zo gek veel zin...
Maar wanneer je weet dat er maar weinig concurrent connecties zullen zijn, en je geen pooling nodig hebt, is 't niet noodzakelijk. Alleen snij je jezelf dan wel in de vingers wanneer het systeem later door moet schalen naar meer concurrent users.

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Hela, inderdaad, als ik update_template uitcommentariëer dan werkt ie wel. Gekke is ook dat als ik die SP in de query analyzer uitvoer, dan geeft ie ook een "algeme netwerkfout" (ook 100% reproduceerbaar). De SP ziet er als volgt uit:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
CREATE PROCEDURE update_template @PIN int, @Type char(4), @Live bit, @Template text
AS
IF EXISTS(
   SELECT *
   FROM _Templates
   WHERE Type=@Type AND Live=@Live AND PIN=@PIN
)
   UPDATE _Templates
   SET Template=@Template, Cache=NULL
   WHERE Type=@Type AND Live=@Live AND PIN=@PIN
ELSE
   INSERT _Templates (PIN, Template, Type, Live) VALUES (@PIN, @Template, @Type, @Live)


Het zou *misschien* te maken kunnen hebben met het feit dat er een "text" parameter bij zit, maar volgens mij moet dit gewoon kunnen. Anyway, ik voer de SP keurig uit met de parameters '10017', 'vovv', 1 en als vierde een heel HTML-document als string. Ik kan er helaas geen varchar(8000) van maken, want het kan best groter dan 8KB zijn. En voor varchar(max) moeten we nog ff wachten tot oktober ;)

日本!🎌


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Het heeft te maken met het text veld. Werken met textvelden vereist een andere aanpak dan met gewone velden. Je moet o.a. de functie WRITETEXT gebruiken om iets aan een text veld toe te voegen. Dit hoeft niet als de database optie 'text in row' aan staat, maar daar moet je je maar even goed in verdiepen voordat je dat doet.

Je moet even in Books Online inlezen over het werken met TEXT datatypes/

Oops! Google Chrome could not find www.rijks%20museum.nl


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Weet je wat dan nog vager is? Het probleem lijkt weg te zijn als ik die parameter verander in ntext. Dan neemt ie dus onnodig 2x zoveel geheugen in, maar dan werkt het wel... Heb je daar dan ook zo'n mooie verklaring voor, P_de_B?

日本!🎌


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Nee, niet echt. Dat klinkt niet logisch. Van oudser weet ik nog wel dat er altijd 'vage' problemen waren met het werken met (n)text/image datatypes. Maar ik kan hier niet een verklaring voor geven

Oops! Google Chrome could not find www.rijks%20museum.nl


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Wat gebeurt er als je de command timeout op 200 zet? (wel weer even text ipv ntext gebruiken).

Oops! Google Chrome could not find www.rijks%20museum.nl


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Topicstarter
Dan is het oorspronkelijke probleem weer terug. Maar hij doet er geen 200 seconden over (en dat is waarschijnlijk waar je op doelde ;)). Ook ConnectionTimeout heeft er geen invloed op.

日本!🎌


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Nou, ik vrees dat ik je dan niet meer kan helpen. Heel vreemd, ik kan er ook niets over vinden.

Oops! Google Chrome could not find www.rijks%20museum.nl

Pagina: 1