Ik ben bezig om een ontwerp te maken van een multi-user applicatie (>50 gebruikers) in VB.NET met als database platform MS SQL Server 2000. De organisatie wenst dat alle SQL statements uitgevoerd worden door stored procedures en niet door ADO.
Nu mijn vragen:
Wanneer in het theoretische geval twee of meer gebruikers gelijktijdig dezelfde stored procedure opstarten hoe gaat SQL Server hier mee om? Maakt SQL server gebruik van een bepaalde transactiepool oid? De reden dat ik dit vraag is het al dan niet gaan gebruiken van de @@identity om de laatst toegevoede id op te halen.
Het zou kunnen voorkomen dat meerdere gebruikers dezelfde gegevens uit een record gaan wijzigen, vb: gebruiker a haalt een detailvester op en gaat naar het toilet, gebruiker b haalt dezelfde gegevens op tijdens de plaspauze en voert een wijziging door, a komt terug en voert ook een wijziging door. Hierdoor zijn de door b doorgevoerde wijzigingen verloren gegaan. Biedt SQL Server iets waardoor dit voorkomen kan worden of dien je dit zelf op te lossen door bv "een datum/tijd laatste mutatie" bij te houden en die te controleren voordat je de wijziging door gaat voeren?
Nu mijn vragen:
Wanneer in het theoretische geval twee of meer gebruikers gelijktijdig dezelfde stored procedure opstarten hoe gaat SQL Server hier mee om? Maakt SQL server gebruik van een bepaalde transactiepool oid? De reden dat ik dit vraag is het al dan niet gaan gebruiken van de @@identity om de laatst toegevoede id op te halen.
Het zou kunnen voorkomen dat meerdere gebruikers dezelfde gegevens uit een record gaan wijzigen, vb: gebruiker a haalt een detailvester op en gaat naar het toilet, gebruiker b haalt dezelfde gegevens op tijdens de plaspauze en voert een wijziging door, a komt terug en voert ook een wijziging door. Hierdoor zijn de door b doorgevoerde wijzigingen verloren gegaan. Biedt SQL Server iets waardoor dit voorkomen kan worden of dien je dit zelf op te lossen door bv "een datum/tijd laatste mutatie" bij te houden en die te controleren voordat je de wijziging door gaat voeren?