none
Acc 2003 Odbc Sqlserver 2005/8 transaction

    Frage

  • Hallo NG!

    Ich musste ein sehr erfolgreiches mdb - Projekt auf Sqlserver Datenhaltung umstellen. ODBC war der einfache Weg.

    Nun passiert es, dass bei Transactions-Steuerung das Prgrogramm sich selbst aussperrt.

    Gibt es einen Tipp?

    Vielen Dank im vorruas aus dem sonnigen Hannover ( diesmal)

    Walther Lückemann

     

     

     

     


    ciao Walther
    Mittwoch, 18. Mai 2011 08:36

Antworten

  • hi,

    das heißt es geht jetzt? Das Problem dürfte in zuvielen geöffneten Recordsets gelegen haben.

    dbseeChanges geht doch nur für jet

    Jo, und genau die benutzt du ja immer noch: Access GUI -> Jet -> Database Backend.
    Du mußt ihre sagen, das sich die Daten ohne ihr zutun nach einem z.B. Insert durch eine IDENTITY Spalte oder einen Trigger geändert haben können.


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    • Als Antwort markiert Mittwoch, 18. Mai 2011 13:34
    Mittwoch, 18. Mai 2011 13:14
    Moderator

Alle Antworten

  • hi,

    definiere bitte "Transactions-Steuerung" und "sich selbst aussperrt".


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Mittwoch, 18. Mai 2011 08:53
    Moderator
  • Hallo Stefan,

    erst mal Danke für  die Rückfrage.

     

    folgendes:

    Workspaces(0).BeginTrans
    set dbs = workspaces(0).databases(0)
    ....

    in einer Laufschleife

    set rs = dbs.OpenRecordset(strSql)

    rs.edit

    ...

    rs.update

     

    so und nun wird der selbe Satz auf diese Weise mehrfach bearbeitet.

    Unter der mdb war das kein Problem, es wurde die selbe Transaction erkannt und der mehrfache Update wurde durchgezogen.

    unter odbc wartet der zweite rs.edit bis zum TimeOut.

     

    Nimmt man den Tranactionschutz raus läuft alles. ( Aber ich brauch den Schutz wegen Multiuser-Problematik :-))

    Reicht die Info?

    Walther Lückemann

     

     


    ciao Walther
    Mittwoch, 18. Mai 2011 09:02
  • hi,

    dein Beispiel ist unvollständig. Vergleiche es mit How to: Use Transactions in a DAO Recordset.

    in einer Laufschleife
    set rs = dbs.OpenRecordset(strSql) so und nun wird der selbe Satz auf diese Weise mehrfach bearbeitet.

    Warum öffnest du den selben Satz immer wieder innerhalb der Schleife? Macht keinen Sinn. Auch solltest du hier den Typ und die Optionen für dein Recordset angeben, d.h.

    Set rs = dbs.OpenRecordset(strSql, dbOpenDynaset, dbSeeChanges)

    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Mittwoch, 18. Mai 2011 09:36
    Moderator
  • ja, das hab ich an der Stelle jetzt auch umprogrammiert - aber was soll das ?

    ( Manchmal ist satzweises abarbeiten halt angenehm - vorher eine Summenbildung für einen speziellen Sachverhalt mühsam :-)

    dbseeChanges geht doch nur für jet - und selbst wenn: es dürfte ja gerade kein Konkurierender Zugriff gemeldet werden.

    Ich hoffe nur das nicht zu viele Stellen betroffen sind

    Fazit : Die Odbc Schnittstelle hat da eine Macke.

    Danke für die Hilfe

     

    W. Lückemann

     


    ciao Walther
    Mittwoch, 18. Mai 2011 12:44
  • hi,

    das heißt es geht jetzt? Das Problem dürfte in zuvielen geöffneten Recordsets gelegen haben.

    dbseeChanges geht doch nur für jet

    Jo, und genau die benutzt du ja immer noch: Access GUI -> Jet -> Database Backend.
    Du mußt ihre sagen, das sich die Daten ohne ihr zutun nach einem z.B. Insert durch eine IDENTITY Spalte oder einen Trigger geändert haben können.


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    • Als Antwort markiert Mittwoch, 18. Mai 2011 13:34
    Mittwoch, 18. Mai 2011 13:14
    Moderator
  • und genau das war des Pudels kern.

     

     

    Vielen Dank !


    ciao Walther
    Mittwoch, 18. Mai 2011 13:35