Results 1 to 6 of 6

Thread: SQL Server: Autoincrement ID wordt opgehoogd, maar geen nieuw record zichtbaar

  1. #1

    SQL Server: Autoincrement ID wordt opgehoogd, maar geen nieuw record zichtbaar

    Ik heb het volgende probleem;

    In een SQL Server 2005 omgeving probeert een klant via mijn software een record aan een tabel toe te voegen.
    Er wordt geen foutmelding getoond, het autoincrement ID wordt opgehoogd, maar er is geen record zichtbaar.
    In een vorige versie van mijn software wordt het record wel zichtbaar, daarom weet ik ook dat het ID opgehoogd is.

    Iemand enig idee hoe dit kan?

  2. #2
    Wat heb je gewijzigd in je software dan?

    Ik weet dat het bij diverse database adapters een extra stap vergt om het net aangemaakt record ook te zien te krijgen. Dat ophogen gebeurt uiteraard op de server, dus je client zal op een of andere manier dat record op moeten vragen. Wat gebruik je voor toegang naar je database?

  3. #3
    Zie je het nieuwe record niet in jouw software, of in de database zelf? Mijn educated guess zou zijjn dat je iets met transacties doet, maar geen commit.
    Marcel

  4. #4
    Het nieuwe record is niet te zien in SQL Server Management Studio.
    Committen van transactie vindt plaats, en er treedt ook geen enkele foutmelding op.
    Een paar zaken zijn vreemd;
    - In mijn eigen omgeving wordt het record wel goed weggeschreven
    - In de omgeving van de klant wordt de autoincrement wel opgehoogd, maar is het record niet zichtbaar.
    - In een vorige versie van de software wordt het record wel goed weggeschreven (zichtbaar in Management Studio), vandaar dat ik kan zien dat de autoincrement is opgehoogd. Het ligt daarom ook niet aan de connectiestring, want deze wordt door zowel de oude als de nieuwe versie gebruikt. Er zit echter gewoon een gat in de ID's. Het ene record heeft bv 100240, en de volgende 100280...

  5. #5
    Dat kan ook. Ik ken SQL Server niet zo goed, maar ervanuitgaande dat dat werkt zoals in andere databases, wordt er een ID toegekend bij het maken van het record, zodra het record gemaakt wordt. Als de transactie wordt afgebroken, blijft de teller gewoon opgehoogd. Dat is op zich ook logisch, want je kunt ook binnen de transactie het ID al gebruiken, en terwijl de transactie loopt kunnen anderen ook al records toevoegen. Zo'n ID-generator is niet een enorme array van beschikbare nummers, maar gewoon een enkel getal dat steeds opgehoogd wordt buiten de transactie-scope om. Daar kunnen dus zeker gaten in ontstaan, zowel bij het afbreken van een transactie als bij het achteraf verwijderen van een rij.
    1+1=b

  6. #6
    Met SQL Server Profiler kun je alle queries zien die worden uitgevoerd, kun je daar eens induiken? Daar zou dan een UPDATE en een COMMIT langs moeten komen.
    Marcel

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •