none
C5 2010

    Spørgsmål

  • Hej forum,

    Jeg har problemer med deadlocks på en C5 2010 SQL, den er opgraderet fra en ver. 4.0 her var der aldrig problemer.

    Problemet opstår oftest i forbindelse med opdatering af følgesedler og fakturaer, dette sker via en bacthserver. menn på det seneste er de også kommet ved ordre indtastning, nogen som har ideer til hvordan dette fejlsøges?

     

    Carsten Lundqvist

     

     

     


    /carsten
    9. november 2011 14:01

Alle besvarelser

  • Hej Carsten Lundqvist

     

    Jeg har en del erfaring med deadlocks fra især en version 3.0 sp3 SQL.

     

    For det første skal du efter deadlocks sikre dig at du ikke har fået 0-records i din database. Dem kan C5 nemlig ikke håndtere - og det kan give alle mulige mærkelige fejl. Der er en kørsel til at checke det med i MNX'en DBA. Er der nogle, så skal de fjernes...

    Mht. deadlock'en så er min erfaring at du lettest slipper af med dem / minimere dem ved at optimere hastigheden på SQL-serveren (primært RAM + disksystem) og klienter (primært RAM + CPU-hastighed. Dernæst kan du prøve at indsætte kommandoen RETRY_POINT i kørslerne hvis den ikke allerede er der. Det burde få kernen til at recover automatisk efter en deadlock - men desværre er det nok en af de mindst brugte kommandoer i XAL-sproget (egentligt burde den vel bruges hvergang man bruger TTS)...

    Det er _meget_ væsentligt at den står det korrekte sted - dvs. et sted hvor kørslen umiddelbart kan genoptages efter en deadlock uden at variable og temporære kartoteker mv. indeholder noget forkert (rester fra det der blev afbrudt).

    Endelig er en væsentlig pointe nok også hvilken SQL-udgave i bruger. C5 supportere record-locking (fremfor table locking) - men så vidt jeg husker kun hvis SQL'en er ny nok. Så på med en ret ny SQL hvis i ikke allerede kører på sådan en fætter :-).

    Pas også på hvilke kørsler der kører samtidigt. Fx. er det som regel en meget dårlig ide at begynde at omdøbe noget mens man masse-fakturerer...

    Håber det hjælper dig videre - men det kan være RET spooky at fejlsøge på. Jeg har haft bedst held med at få tingene til at gå hurtigere da tabeller så er låst i kortere tid og deadlocks dermed minimeres.

     

    MVH

    gsl (at) systemconnect.dk


    MVH gsl (at) systemconnect.dk
    10. november 2011 07:37
  • Hej Gert,

     

    Tak for dit svar.

    Jeg har undersøgt records uden løbenummer ingen der.

    Isenkrammet er meget nyt og kører rigtig hurtigt, Retry point er standard sat ind i faktura/følgeseddel - men det undre mig at det står før TTS?

    SQL er ver. 2005 så heller ikke her bør være problemer.

    Umiddelbart tror jeg det må være en kerneting da alt fungerede fint i 4.0

    Er også fejlmeldt hos MS, men mangler stadig svar.


    /carsten
    17. november 2011 07:56
  • Transaktionen rulles tilbage ved deadlock. Så jeg mener det er helt efter bogen at den står før TTSBEGIN.

    Lige en idé - check lige at compatibility level ikke står forkert på databasen på SQL'en.

    Ellers har jeg ikke rigtige yderligere forslag - vi har flere 2010 og 4.0 installationer på SQL og har ikke rigtige oplevet at den ene skulle være værre eller bedre til deadlocks end 4.0...

    MVH

    gsl (at) systemconnect.dk


    MVH gsl (at) systemconnect.dk
    17. november 2011 08:07