Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med transaktioner

Postades av 2007-03-06 11:47:09 - Olof Lidström, i forum c# (c-sharp), Tråden har 6 Kommentarer och lästs av 626 personer

Jag har ett problem med en ASP.NET applikation som ska hämta nästa lediga sekvensnummer från en tabell för att sedan göra insert i ett antal andra tabeller utifrån detta sekvensnummer.

Jag har ett index på en viss tabell som talar om att sekvensnumret ska vara unikt för varje rad.
Problemet jag har är att ibland kan det hända att man får samma sekvensnummer om man anropar den funktion som läser upp sekvensnumret samtidigt med två olika webbläsare.

När jag läser upp sekvensnumret och sedan uppdaterar tabellen med nästa lediga sekvensnummer så använder jag mig av en databastransaktion.

Jag har provat allt tycker jag.
Databastransaktioner med olika isolationmode
System.Threading.Monitor.Enter(this);
....
....
....
System.Threading.Monitor.Exit(this);

Lock(this)
{
...
...
...
}

funktionen som anropas ser ut såhär

private int getNextNumber()
{
int iNumber = 0;

sSql = "select max(nextnumber) from tblSekv";
dr = GetDataReader(sSql);

if (dr.Read())
{
iNumber = dr.GetInt32(0);
}

dr.Close();

iNumber++;
sSql = "update tblSekv set nextnumber=" + iNumber;
ExecuteSql(sSql);
}
return iNumber;
}

Är det någon duktig mäniska som kan hjälpa mig med detta jag har helt slut på ideer och kan inte hitta nåt matnyttigt på google.


Svara

Sv: Problem med transaktioner

Postades av 2007-03-06 13:00:33 - Niklas Jansson

Vi hade en diskussion om detta för någon dag sen:
[Startvärde på en räknare i access .]


Svara

Sv:Problem med transaktioner

Postades av 2007-03-06 13:35:15 - Olof Lidström

Finns det inget sätt att förhindra att två eller fler kan accessa samma kod samtidigt på ett smidigt sätt, det enda jag kan tänka mig annars är att sätta en applikationsvariabel som håller reda på om någon håller på att ta fram ett nytt sekvensnummer


Svara

Sv: Problem med transaktioner

Postades av 2007-03-06 14:13:38 - Martin Rex

Det måste väl finnas något i stil med TTSBegin / TTSCommit ?
Som låster tabellen för en unika användare ?

/Martin


Svara

Sv: Problem med transaktioner

Postades av 2007-03-06 15:02:15 - Niklas Jansson

<b>>applikationsvariabel som håller reda på om någon håller på att ta fram ett nytt sekvensnummer</b>
Hjälper tyvärr inte heller helt. Du kan få aningen färre krockar, men det är inte foolproof.


Svara

Sv:Problem med transaktioner

Postades av 2007-03-06 15:40:02 - Olof Lidström

Har du något förslag på hur man kan lösa detta dilemma?


Svara

Sv: Problem med transaktioner

Postades av 2007-03-06 16:11:38 - Niklas Jansson

Kolla tråden.
1. Det "riktiga" är ju att låsa tabellen helt, för all utomstående syn, men det verkar inte som att det finns låsningsgrader som gör detta. Mitt förslag var att lägga in en insert först för att på så sätt låsa den. En annan variant är att göra det olagligt att ha dubletter. Det kommer ge dig felmeddelanden som du får hantera, och på så sätt löser du det.
2. Koden som den är skriven nu är väldigt olämpad, alldeles för långsam. Gör hellre allt i ett enda anrop., så har du lite bättre chans.
3. Oavsett vad du än försöker med måste du på någon nivå få tag i ett "blocking call". Detta görs via trådar eller processer. Exakt hur du ska göra vet jag inte, men är det helt nödvändigt att det aldrig kan inträffa, så måste du gå till en sån nivå. Det räcker inte med en applikationsvid variabel, om du inte har tillgång till en test-and-set-möjlighet, aka mutex.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
898
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies