webForumDet fria alternativet

prestanda vid transaktioner

ASPur ASP

5 svar · 172 visningar · startad av fredrik

fredrikMedlem sedan dec. 19991 072 inlägg
#1

Jag har en liten fundering om när man gör transaktioner som man vill ha lite koll på i sina applikationer.

Man använder ju då "BeginTran", "CommitTran" och "RollBackTran" för att säkerhetsställa sina transaktioner (inserts m.m.).

Som jag ser det finns det 3 olika sätt:
1. Direkt på databas servern. Exempelvis i koden i den lagrade proceduren i sql-server.

2. I Asp. Att använda connection-objektet och sätta transaktions-kollen där.

3. Via COM+ (MTS).

Är det nån som har något att säga om vad som är bäst, dels för säkerheten men också för prestanda m.m.?

Någon som vet?

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

emissionMedlem sedan dec. 19996 721 inlägg
fredrikMedlem sedan dec. 19991 072 inlägg
#3

Ok, tackar för det!

som jag tolkar det verkar det om om det vore bäst i de flesta fall att köra transaktions-hanteringen via T-sql.

Det verkar iaf inte som om com+ helt klart är det bästa som jag trodde...

Nån som har nån mer erfarenhet av det eller något att tillägga?

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

JEMedlem sedan juni 2000144 inlägg
#4

Hmm, ingen som kan förklara lite hur det går till när man göra en transaktion direkt i ASP koden med hjälp av connection objectet. Har försökt ett par gånger men inte riktigt fått det att funka, inte heller har jag fått några felmeddelande så jag är lite fundersam.
Ingen som har ett litet enkelt exempel eller en sida man kan läsa mer på?

fredrikMedlem sedan dec. 19991 072 inlägg
#5

sidan som emission tipsade om ovanför står en del på...

ett enkelt exempel:

set conn = server.CreateObject("adodb.connection")
conn.Open dbStr

'rätt sql-sats
sql = "INSERT INTO adotest (bokstav) VALUES ('fk')"

'felaktig sql-sats
sql2 = "INSERT INTO adotessd (bokstav) VALUES ('fk2')"

'fortsätt vid fel
on error resume next

'starta trans
conn.BeginTrans

'kör sql (fungerar)
conn.Execute(sql)

'kör slq2 (fungerar inte)
conn.Execute(sql2)

'du får ett err.number att kolla om nåt gått fel
if err.number<>0 then
	conn.RollbackTrans
else
	conn.CommitTrans
end if

conn.Close
set conn = nothing

Jag testar mot sql-server, där kan du även se hur ado översätter transaktionkoden till T-sql om du startar profiler och lägger till din databas där.

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

JEMedlem sedan juni 2000144 inlägg
#6

Hmm, va ju i stort sett precis likadant jag gjorde när jag testade. Ville dock inte funka för mej.

Tack för exemplet iaf, nu vet jag att jag inte är på helt fel väg iaf, får testa vidare :)

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