webForumDet fria alternativet

Galen på OleDbConnection

10 svar · 376 visningar · startad av a95johjo

a95johjoMedlem sedan feb. 200326 inlägg
#1

Hej
Jag använder OleDb för databaskoppling mot SQL Server 2000 i min ASP.Net applikation. När jag utvecklar och testkör fungerar allt bra. Men när flera personer använder tjänsten samtidigt, får man IBLAND

"Connection property is not initialized" eller
"bla bla bla Connection is Open, Executing" som databaskrash.

Jag gör ALLTID "new OleDbConnection" vid varje ny transaktion, och jag har med "Ole Db Services = -2" för att slippa poolning av databas (har även provat med poolning med samma resultat).

Vad i hela friden kan detta bero på? Verkar som om det bara händer om två databasfrågor kör exakt samtidigt.

Mvh
Johan

DinoMedlem sedan sep. 20011 914 inlägg
#2

Någon annan vet säkert, men varför använder du Oledb till SQLServer. Sql versionen är ju utvecklad för att arbeta med SQLServer och, har jag läst, vara 200-300% snabbare.

a95johjoMedlem sedan feb. 200326 inlägg
#3

Därför att det ska funka med Oracle, MySQL, SQL Server mm. Vill inte binda mig mot SQL Server bara.

NETworkMedlem sedan juni 20011 732 inlägg
#4

Förstår inte varför det skulle innebära att du binder dig mot sql-server? Gör en klass som tar hand om dina olika connections. Dessutom kan du ju ändå inte använda oledb tillsammmans med mySql.

Vet inte om det är så, men det känns ju inte helt otroligt att problemet beror just på att du använder fel klass till fel db... för det gör du.

a95johjoMedlem sedan feb. 200326 inlägg
#5

Tackar för kommentarer.

Jag har i alla fall testat mot Oracle, SQL Server och Access utan problem (förutom detta... som händer ca 1 gång per 50 transaktioner helt slumpartat och endast i ASP.Net-applikationer) och utan att behöva ändra en kodrad. I Windowsapplikationer funkar det alldeles utmärkt och jag tycker det är helt acceptabel prestanda för det jag använder det till.

Mot MySQL har jag bara kört lite och kollat att det går att läsa, ändra och deleta. Så långt allt väl, men visst, jag har sett att det finns lite strul kvar att lösa med binärobjekt, transaktionshantering etc. MySQL brottas med problem Oracle löste för 10 år sen och SQL Server för 2 år sen, så vem vet, om ett par år kanske....

Vad gäller mitt problem är jag dock tämligen övertygad att det är poolningen som är problemet, och inte val av teknisk lösning.

/ johan

PMedlem sedan jan. 20012 204 inlägg
#6

En så kallad db-wrapper är ju annars en bra lösning ur prestandardsynpunkt.

kristofferMedlem sedan juni 20001 257 inlägg
#7

Här har du en bra artikel: http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=516

a95johjoMedlem sedan feb. 200326 inlägg
#8

Tackar för detta. Mycket möjligt att jag ändrar detta i framtiden när jag har mer tid.

Nu visade det sig (som det alltid gör när man i paniken och kaoset tror att det är Microsoft som gjort fel) att jag när jag portade applikationen från Windowsapplikation till ASP.Net-applikation missat att "static" inte är global för varje session utan för varje Applikation. Och eftersom jag delade på ett objekt som höll en OleDbConnection i en static (HUH!) så blev det galet när flera användare körde samtidigt.

Så skrev jag om den skiten och allt funkar perfa. Ja ja, alltid lär man sig något...

WalkerMedlem sedan okt. 2002188 inlägg
#9

P skrev:

En så kallad db-wrapper är ju annars en bra lösning ur prestandardsynpunkt.

Hejsan

Skulle du kunna utveckla det lite?

Förstår inte hur den menar då du säger att en wrapper skulle vara bra ur prestandasynpunkt..

a95johjoMedlem sedan feb. 200326 inlägg
#10

antar att P menar att en wrapper är bra ur prestandasynpunkt eftersom man då alltid kan använda den åtkomstmetod som ligger närmast databasen. SQLConnection för SQL Server, OracleConnection för Oracle osv. i stället för OleDb eller ännu värre ODBC.

PMedlem sedan jan. 20012 204 inlägg
#11

precis a95johjo!

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