30. juli 2003 - 17:17Der er
13 kommentarer og 2 løsninger
MSSQL 2000 transaktionsstyring
Jeg skal hente data fra MS sql 2000 database server i c++ VST.NET.
Jeg ved ikke ret meget om MS SQL 2000 DB og mit spørgsmål lyder om man kan opsætte MSSQL db til at håndtere transaktionsstyring så man ikke behøver at kode det i sit program?
I så fald hvordan opsætter man så MS SQL DB til dette.
Måske jeg misforstår "opsætte MSSQL db til at håndtere transaktionsstyring", men det eneste niveau hvorpå du kender logikken der kræves for transaktioner er da i dit program..? Databasen ved jo intet om hvornår der skal anvendes transaktioner...
Jeg har hørt lidt om at man kunne få sql db til at håndtere transaktionsstyring dvs at kun én bruger har adgang til db af gangen så der ikke bliver dubletter.
Det har vist noget at gøre med at man laver sine SQL kald i en fil som man kalder fra sit program. Det skulle vist så være muligt via disse filer at håndtere transaktionsstyringen.
Men jeg er ikke sikker på hvordan det gøres og det er derfor jeg henvender mig her.
Håber at det kunne hjælpe lidt angående mit spørgsmål.
Men hvis jeg nu laver en unik nøgle i min tabel, hvad sker der så hvis to eller flere lægger data i databasen samtidig. Kan db godt finde ud af at give dem et unik nummer hver afligevel eller vil den afvise alle undtagen én? eller vil der blive sat data fra forskellige brugere i en række?
database kald begin transaction første update/insert SQL sætning ... sidste update/insert SQL sætning database kald commit transaction
og så klarer databasen det med tranasktionen.
Og hvis man sætter database transaction isolation level til serialized så er man helt sikker på at der ikke er andre processer som ser noget de ikke skulle se.
Det drejer sig om at en række klienter i et netværk skal sende info om klientmaskinerne til en server med en MS SQL database. Klienterne sender automatisk info afsted hele tiden til serveren som så skal lægge disse info ned i db.
To eller flere klienter sender info samtidig til serveren som håndtere klienterne samtidig og derfor sender infor samtidigt ned i db. I DB skal hver enkel klient havde et unik nummer med hver sine info.
Det jeg vil forhindre er at der sker dubletter af to klienter.
Skal SQLServer selv generere de unikke numre eller skal din applikation ?
Hvis SQL server skal gøre det så erklærer du bare kolonnen til at være IDENTITY, så sørger SQLServer selv for det.
Hvsi du vil gøre det så skal du starte med at lave et UNIQUE INDEX på kolonnen (medmindre den er PRIMARY KEY), så vil et forsøg på at indsætte et duplikat fejle.
Så skal du have en metode til at generere unikke ID'er og der vil jeg anbefale Scott Amblers high-low approach. Det er generelt accepteret som måden at gøre det på.
jpk-> Ja tildelst. Jeres svar har givet mig nogle ledetråde som jeg vil bygge videre på. Men Jeg har ikke forsøgt på nuværende tidspunkt pga tidsmangel.
MVH Tom
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.