/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Låse i MS-SQL
Fra : Bo Håkonsen


Dato : 30-07-03 13:54

Under MS-SQL-server 2000 har jeg forsøgt at eksperimente lidt med låse. Jeg
har forsøgt at låse en tabel (eller nogle rækker i en tabel). Jeg kører
nedenstående script to gange samtidig i hver sin SQL query analyzer. Men jeg
havde regnet med at tabellen var låst i 10 sek. for så at blive låst op
igen, når transaktionen blev commited....
Den ene script kører igennem uden problemer, mens den anden venter for
evigt...

Hvorfor låses der ikke op igen?
Mvh. Bo Håkonsen



SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

BEGIN TRAN
select * from personer
update personer set something=0 where something_else = 56
WAITFOR DELAY '00:00:10'
COMMIT TRAN



 
 
Ole Hyldahl Hansen (30-07-2003)
Kommentar
Fra : Ole Hyldahl Hansen


Dato : 30-07-03 16:39

> Under MS-SQL-server 2000 har jeg forsøgt at eksperimente lidt med låse.
Jeg
> har forsøgt at låse en tabel (eller nogle rækker i en tabel). Jeg kører
> nedenstående script to gange samtidig i hver sin SQL query analyzer. Men
jeg
> havde regnet med at tabellen var låst i 10 sek. for så at blive låst op
> igen, når transaktionen blev commited....
> Den ene script kører igennem uden problemer, mens den anden venter for
> evigt...
>
> Hvorfor låses der ikke op igen?
> Mvh. Bo Håkonsen
Jeg kan ikke give nogen god forklaring, men noget kunne tyde på, at det er
Query Analyzeren, der holder transaktionen åben. Når jeg kører det og
process 2 hænger efter process 1 melder "Query batch completed" og derefter
lukker vinduet i process 1 frem kommer en dialogboks, der spørger om man vil
commit'e transaktionen.

Muligvis indleder QA med en transaktion hvilket tæller "transaktionsdybden"
1 op. Det endelige Commit bevirker muligvis derfor ikke et "rigtigt" commit
hvorfor process 2 bliver hængende. Hvis process 1 afsluttes helt kører
process 2 fint til enden.

Så jeg vil nok mistænke QA snarere end SQL Server. For dit script burde
opføre sig, som du regner med.

/Ole Hyldahl Hansen



Bo Håkonsen (31-07-2003)
Kommentar
Fra : Bo Håkonsen


Dato : 31-07-03 08:44

Jeg takker for dit svar.
Mvh. Bo

"Ole Hyldahl Hansen" <ohh@scisoft.dk> skrev i en meddelelse
news:VDRVa.41760$Kb2.1788672@news010.worldonline.dk...
> > Under MS-SQL-server 2000 har jeg forsøgt at eksperimente lidt med låse.
> Jeg
> > har forsøgt at låse en tabel (eller nogle rækker i en tabel). Jeg kører
> > nedenstående script to gange samtidig i hver sin SQL query analyzer. Men
> jeg
> > havde regnet med at tabellen var låst i 10 sek. for så at blive låst op
> > igen, når transaktionen blev commited....
> > Den ene script kører igennem uden problemer, mens den anden venter for
> > evigt...
> >
> > Hvorfor låses der ikke op igen?
> > Mvh. Bo Håkonsen
> Jeg kan ikke give nogen god forklaring, men noget kunne tyde på, at det er
> Query Analyzeren, der holder transaktionen åben. Når jeg kører det og
> process 2 hænger efter process 1 melder "Query batch completed" og
derefter
> lukker vinduet i process 1 frem kommer en dialogboks, der spørger om man
vil
> commit'e transaktionen.
>
> Muligvis indleder QA med en transaktion hvilket tæller
"transaktionsdybden"
> 1 op. Det endelige Commit bevirker muligvis derfor ikke et "rigtigt"
commit
> hvorfor process 2 bliver hængende. Hvis process 1 afsluttes helt kører
> process 2 fint til enden.
>
> Så jeg vil nok mistænke QA snarere end SQL Server. For dit script burde
> opføre sig, som du regner med.
>
> /Ole Hyldahl Hansen
>
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408521
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste