Avatar billede bif_pin Nybegynder
30. juli 2003 - 17:17 Der 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.

MVH Tom
Avatar billede jpk Nybegynder
30. juli 2003 - 19:48 #1
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...
Avatar billede bif_pin Nybegynder
30. juli 2003 - 21:00 #2
Tak for din interesse jpk.

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.

MVH Tom
Avatar billede jpk Nybegynder
30. juli 2003 - 21:10 #3
Typisk vil man, på sin tabeldefinition, forhindre dubletter ved at kræve, at en eller flere kolonner unikke. Måske er det en løsning du kan bruge?
Avatar billede jpk Nybegynder
30. juli 2003 - 21:16 #4
Du kan godt lave stored procedures, det er måske det du har hørt om, men det er stadig noget du selv skal lave og det er ikke lettere...
Avatar billede bif_pin Nybegynder
30. juli 2003 - 21:18 #5
Ja du er inde på noget af det rigtige.

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?

MVH Tom
Avatar billede jpk Nybegynder
30. juli 2003 - 21:26 #6
Måske du skal beskrive din problemstilling lidt nærmere, så tror jeg det er lettere at hjælpe.

En typisk problemstilling kunne være (eksempel):

En kunde vil købe 100 stk af en vare.

1) lav en execute der tæller lageret ned med 100 stk.
2) lav en execute der tæller kundens konto op med 100 stk.

Her er det naturligvis vigtigt at enten BEGGE eller INGEN af de to execute's bliver udført. I dette tilfælde vil man bruge en transaktion.


Måske du kan give en lignende beskrivelse?

Jacob
Avatar billede jpk Nybegynder
30. juli 2003 - 21:28 #7
Udfra det du skriver kan jeg ikke se nogle problemer med tildeling af id'er.
Avatar billede arne_v Ekspert
30. juli 2003 - 21:35 #8
Normalt laver man:

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.
Avatar billede bif_pin Nybegynder
30. juli 2003 - 21:35 #9
Jeg skal forsøge.

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.

Håber det kunne hjælpe lidt.

MVH Tom

Jeg laver en socketforbindelse til dette.
Avatar billede arne_v Ekspert
30. juli 2003 - 21:43 #10
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å.
Avatar billede arne_v Ekspert
18. august 2003 - 23:45 #11
bif>

Kommet videre ?
Avatar billede bif_pin Nybegynder
19. august 2003 - 08:05 #12
Grundet ferie har jeg først haft muligt for at svare nu og det beklages meget.

Jeg lukker spørgsmålet og fordeler pointsne.
I skal bare lige afgive et svar så jeg kan give jer points.

Tak for hjælpen.
Med venlig hilsen Tom.
Avatar billede arne_v Ekspert
19. august 2003 - 08:40 #13
svar
Avatar billede jpk Nybegynder
19. august 2003 - 08:44 #14
Tusind tak, fik du fundet en løsning..?
Avatar billede bif_pin Nybegynder
19. august 2003 - 11:04 #15
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester