Avatar billede arno Nybegynder
04. maj 2001 - 10:42 Der er 10 kommentarer og
1 løsning

Problem med autonummering i en MS SQL 6.5

Jeg har et stort problem...
Jeg har en tabel, hvor der automatisk tildelses et nummer ved insert. Der sker så det, at engang imellem kan en record få tildelt et nummer der allerede er tildelt.. og derved opstår der 2 records med samme id nummer... Dette burde ikke kunne lade sig gøre... har du evt. prøver noget ligende og løst problemet eller har du en ide til hvad der kan gå galt... JA så er det dine point...
/arno
Avatar billede michael_b Nybegynder
04. maj 2001 - 10:50 #1
jeg er ikke sikker men det lyder som om du ikke har sat dette felt til at være et nøgle felt.
selve typen skal være en int. og allow nulls skal sættes til false.
så burde det virke
Avatar billede mwittrock Nybegynder
04. maj 2001 - 11:00 #2
Dette kan have noget at gøre med denne fejl i SQL Server 6.5:

http://support.microsoft.com/support/kb/articles/Q198/5/72.ASP

Under alle omstændigheder bør du kigge nærmere på DBCC CHECKIDENT kommandoen, som kan korrigere en fejlagtig IDENTITY værdi.
Avatar billede Techwork Praktikant
04. maj 2001 - 11:01 #3
Det er vigtigt at dit felt \"id nummer\" er primær nøgle i din tabel, og at allow nulls sættes til false.

Så burde det ikke kunne lade sig gøre at 2 felter får samme nummer.
Avatar billede arno Nybegynder
04. maj 2001 - 11:01 #4
--> michael_b

Hvis det bare var så simpelt... Feltet er sat til identity , og ingen null værdi tillades..
Værdien i feltet generes automatisk ved insert..

Så alt er egentlig som det skal være - men stadig oplever jeg at der anvendes et nummer jeg allerede har brugt... Fejlen opstår ikke bare i en tabel med jeg har oplevede at den opstår i flere tabeller der ikke er afhængig af hinanden.. /arno
Avatar billede arno Nybegynder
04. maj 2001 - 12:01 #5
--> mwittrock

Har du haft problemet og løst det ??
Har du evt. en ide til hvad jeg gør ??

/arno
Avatar billede mwittrock Nybegynder
04. maj 2001 - 12:03 #6
Det er meget længe siden, jeg har arbejdet med 6.5 - men jeg mener én af de senere Service Packs hjalp på problemet. Hvilken SP er den seneste, du har installeret?
Avatar billede arno Nybegynder
04. maj 2001 - 12:09 #7
Jeg køre sp 3 til sql 6.5 - hvilke sp skal jeg anvende for at rette fejlen ??
Avatar billede mwittrock Nybegynder
04. maj 2001 - 12:41 #8
Husker det desværre ikke, men prøv som udgangspunkt den seneste (de sædvandlige forholdsregler gælder naturligvis: Opgrader ikke i dit produktionsmiljø før du har testet SPen, osv).

Problemet kan så vidt jeg erindrer opstå i forbindelse med, at serveren ikke lukkes korrekt ned, fordi IDENTITY værdierne holdes i hukommelsen. Crasher Jeres server ofte, eller lukkes den jævnligt ukorrekt ned?

Alternativt kan du køre DBCC CHECKIDENT ved opstart. Ikke en smuk løsning, men ikke desto mindre en løsning.
Avatar billede arno Nybegynder
04. maj 2001 - 13:33 #9
JA... Du har fat i noget... som jeg kan bruge til noget..

/arno

Avatar billede arno Nybegynder
04. maj 2001 - 13:35 #10
--> mwittrock

Jeg er faktisk tvunget til at lukke min server indimellem på den hårde måde...
Avatar billede arno Nybegynder
04. maj 2001 - 13:56 #11
--> mwittrock

Jeg tror jeg fandt en løsning til mit problem:

Jeg kan gøre min id - til en unik key - hvilket vil sige at jeg (eller mine brugere) vil få en besked når de vil indsætte i noget der har et id der allerede eksistere i forvejen.. så vil jeg kunne lave en DBCC CHECKIDENT og få de forskellige tabeller med identier på plads.... JA.. det prøver jeg... og mwittrock du fik mig på vej - point til dig..

/arno
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
Computerworld tilbyder specialiserede kurser i database-management

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