🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: free.it.visual-basic
Article #2244

Re: ADO.NET - Bloccare la lettura di una tabella

#2244
From: Raffaele Rialdi
Date: Sun, 22 Jun 2003 21:41
58 lines
3143 bytes
Bloccarla sarebbe terribile dal punto di vista delle performance e della
scalabilit�.

Potresti pi� semplicemente ricontrollare, al momento dell'update sulla B,
che i record in A non siano cambiati rispetto ai valori letti durante la
prima select.
In questo modo non devi eseguire locking e con una sola Update (senza
necessit� neppure di transaction) aggiorni i dati sulla B

Il wizard di VS, quando crea le vari query di update e delete, costruisce le
query proprio con il controllo che i dati presenti su db siano gli stessi di
quelli letti al momento della prima select. Questo grazie al fatto che i
dataset mantengono lo stato delle righe fino a che non viene fatto
AcceptChanges o RejectChanges (infatti la prima viene chiamata da Update, se
tutto va bene).


Certo che se i dati della tabella A continuano a variare cos� tanto da far
fallire molto spesso gli update puoi ricorrere ad un lock logico (una
tabella Locks su cui scrivi gli id impegnati). Questo per� compromette
comunque le performance e la scalabilit� dell'applicazione.

-- 
Raffaele Rialdi
UGIdotNET - User Group Italiano .NET  http://www.ugidotnet.org



"Netslacker" <netslacker@iname.com> wrote in message
news:8W%Ia.108224$Ny5.3122798@twister2.libero.it...
> Salve a tutti. Sto realizzando una funzione che legge alcuni record da una
> tabella (A), esegue dei calcoli e aggiorna un'altra tabella (B).
>
> Visto che il programma, e la funzione in questione, pu� essere utilizzato
da
> pi� persone insieme e contemporaneamente, ho la necessit� di bloccare in
> lettura la tabella (A) il tempo necessario per eseguire i calcoli e
> aggiornare la tabella (B).
>
> Ho provato con le SqlTransaction con pessimi risultati: sono riuscito solo
> ad fare eventualemente il Rollback
>
> Sto pensando di utilizzare dei semafori
>
> Esiste qualcosa in SQL: un comando SELECT ... che inibisca la lettura per
> una cerchia di record ?
>
> datemi un consiglio ....
>
>
> Grazie.
>
> P.S. per la funzione che sto realizzando la gestione dei conflitti, in
fase
> di salvataggio, non va bene
>
>
>
Technical Details
Message-ID: <#hbR2bQODHA.2172@TK2MSFTNGP10.phx.gbl>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!msrtrans1!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
References: <8W%Ia.108224$Ny5.3122798@twister2.libero.it>

Show Full Headers
Complete Article Headers
X-Google-Language: ITALIAN,ASCII
X-Google-Thread: f94ee,fa2856aabc00a4a8
X-Google-Attributes: gidf94ee,public
X-Google-Thread: 10c104,fa2856aabc00a4a8
X-Google-Attributes: gid10c104,public
X-Google-Thread: 10b997,fa2856aabc00a4a8
X-Google-Attributes: gid10b997,public
X-Google-ArrivalTime: 2003-06-22 14:43:11 PST
From: "Raffaele Rialdi" <malta@n0spam_vevy.com>
References: <8W%Ia.108224$Ny5.3122798@twister2.libero.it>
Subject: Re: ADO.NET - Bloccare la lettura di una tabella
Date: Sun, 22 Jun 2003 23:41:04 +0200
Lines: 60
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <#hbR2bQODHA.2172@TK2MSFTNGP10.phx.gbl>
Newsgroups: free.it.visual-basic,it.comp.lang.visual-basic,microsoft.public.it.dotnet.vstudio
NNTP-Posting-Host: 62.101.97.7
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!msrtrans1!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl