Schönen guten Abend,
danke für die Antworten, welche meine Vermutung bestätigt.
Ich verwende in meiner Anwendung eine
SQL anstatt einer Domän Autorisierung, weil ich nicht 2000 Benutzern Änderungsrechte geben möchte.
Für Insert/Update verwende ich TADODataSet und für das Löschen TADOCommand. Alles geschieht im Client. Keine SPs.
Meine Logik ist wie folgt.
1. Mit Hilfe von
WMI und Registry ermittel ich die Daten des Computers, w.z.B. die Software oder die Drucker.
2. Danach baue ich in einer zentralen Funktion die
SQL Verbindung auf und halte sie aktiv mit KeepAlive = True.
3. Die einfachen Computerdaten w.z.B. Computername oder Serialnummer werden dann mit einem Insert oder Update in die
DB gebracht.
4. Die Daten für Software und Drucker liegen in separaten Tabellen und werden mittels Insert hinzugefügt.
5. Zum Schluss wird alles gelöscht, was keinen aktuellen Zeitstempel hat (jeder löscht nur seine Daten) ==> hier kommt es zu der erwähnten Fehlermeldung
6.
SQL Verbindung wieder schließen, wenn alles erledigt ist.
Das heißt, ich habe eine aktive Verbindung und melde mich nicht erneut an.
Diese Fehlemeldung ist echt zum Schreien, da sie so gar nicht passt. Macht
ADO da vielleicht nicht die richtige
Exception?
Meine TADOConnection Einstellungen:
Code:
TADOConnection - aktuelle Werte:
- CommandTimeout : 30
- ConnectOptions : coConnectUnspecified
- CursorLocation : clUseCLient
- IsolationLevel : ilCursorStability
- KeepConnection : True
- LoginPrompt : False
- Mode : cmReadWrite
- Provider : SQLOLEDB.1
Wie kann ich denn meine Logik umbauen in Bezug auf die Tabellen mit den Zusatzinformation, wie Software, Memory, Storage oder Drucker? Ich muss doch irgendwie die alten Daten wieder löschen.
Gibt es eine Möglich, den Lock der Tabelle abzufragen und ggf. zu warten oder sollte das TADOCommand machen?
Muss ich den TimeOut von TADOCommand einfach erhöhen?
Ich werde noch irre.
Als wir nur knapp 800 Computer in unserer Anwendung hatte, gab es keine Probleme. Irgendwie muss ich das lösen. Derzeit kommen die wichtigsten Daten in Datenbank. Nur die Zusatzinformationen sind ggf. nicht genau.
Vielen Dank im Voraus.
Sven