bigpoint Geschrieben 17. März 2004 Geschrieben 17. März 2004 Wie kann ich auf Verteilte Transaktionen mit OLE DB zugreifen bzw. die Daten verändern ?? Zitieren
bigpoint Geschrieben 18. März 2004 Autor Geschrieben 18. März 2004 hmm... schuld sind wider die CDBPropSet, denn wenn ich es so schreibe propset.AddProperty(DBPROP_UPDATABILITY, true); dann funktioniert , leider kann ich kein insert usw machen ( logischerweise ) wenn ich so schreibe propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE ); kriege ich Fehler ;(((( Ich habe im netz so was gefunden, so was leider komme ich damit nicht klar denn die Funktion : DtcGetTransactionManager wird bei mir nicht gefunden ;(( Kann mir jemand helfen ???????????????? Zitieren
Klotzkopp Geschrieben 18. März 2004 Geschrieben 18. März 2004 MSDN Library sagt zu DtcGetTransactionManager: Header: Declared in xolehlp.h Zitieren
bigpoint Geschrieben 18. März 2004 Autor Geschrieben 18. März 2004 stimmt, dann kriege ich aber Fehler : error LNK2001: Nichtaufgeloestes externes Symbol "long __cdecl DtcGetTransactionManager(char *,char *,struct _GUID const &,unsigned long,unsigned short,void *,void * *)" (?DtcGetTransactionManager@@YAJPAD0ABU_GUID@@KGPAXPAPAX@Z) also ich versuche es so: // SQLOLEDB interfaces used in the example. IDBCreateSession* pIDBCreateSession = NULL; ITransactionJoin* pITransactionJoin = NULL; IDBCreateCommand* pIDBCreateCommand = NULL; IRowset* pIRowset = NULL; // Transaction dispenser and transaction from MS DTC. ITransactionDispenser* pITransactionDispenser = NULL; ITransaction* pITransaction = NULL; // Get the command creation interface for the session. if (FAILED(hr = pIDBCreateSession->CreateSession(NULL, IID_IDBCreateCommand, (IUnknown**) &pIDBCreateCommand))) { AtlTraceErrorRecords(hr); return hr; } // Get a transaction dispenser object from MS DTC and // start a transaction. if (FAILED(hr = DtcGetTransactionManager(NULL, NULL, IID_ITransactionDispenser, 0, 0, NULL, (void**) &pITransactionDispenser))) { AtlTraceErrorRecords(hr); return hr; } if (FAILED(hr = pITransactionDispenser->BeginTransaction( NULL, ISOLATIONLEVEL_READCOMMITTED, ISOFLAG_RETAIN_DONTCARE, NULL, &pITransaction))) { AtlTraceErrorRecords(hr); return hr; } [/PHP] wenn ich aber die DtcGetTransactionManager auskommentire kriege ich beim debugging auf der stelle pIDBCreateSession->CreateSession abnormale Fehler Zitieren
bigpoint Geschrieben 18. März 2004 Autor Geschrieben 18. März 2004 Eigentlich das ganze dreht sich nur um XACT_ABORT, denn wenn ich direkt von SQL Server versuche was zu inserten muß ich XACT_ABORT auf on setzen. Ich dachte mir das gleich mache ich mit OLE DB, also in eine sesion SET XACT_ABORT ON und dann insert, etwa so : CCommand<CNoAccessor,CNoRowset> cmoo; cmoo.Create(session, " SET XACT_ABORT ON"); cmoo.Open(); leider bevor ich es mache muß ich in CDBPropSet in sagen dass ich inserten will und dass brieng in durcheinander ( glaube ich ) Andere Frage: wenn ich inserten will mit OLE DB muss ich auch denn command öffnen mit select * from tabelle und alle Daten holen ( was bei vielen Daten sehr lange dauern kann ) oder gibt es eine andere Möglichkeit ??? Zitieren
Klotzkopp Geschrieben 18. März 2004 Geschrieben 18. März 2004 Original geschrieben von bigpoint stimmt, dann kriege ich aber Fehler : error LNK2001: Nichtaufgeloestes externes Symbol "long __cdecl DtcGetTransactionManager(char *,char *,struct _GUID const &,unsigned long,unsigned short,void *,void * *)" (?DtcGetTransactionManager@@YAJPAD0ABU_GUID@@KGPAXPAPAX@Z) xoleHlp.Lib ins Projekt gelinkt? Zitieren
bigpoint Geschrieben 18. März 2004 Autor Geschrieben 18. März 2004 Original geschrieben von Klotzkopp xoleHlp.Lib ins Projekt gelinkt? ja den Fehler kriege ich auch nicht mehr, aber beim debugin komme nicht weiter bei der stelle // Get the command creation interface for the session. if (FAILED(hr = pIDBCreateSession->CreateSession(NULL, IID_IDBCreateCommand, (IUnknown**) &pIDBCreateCommand))) { AtlTraceErrorRecords(hr); return hr; } das ganze mache ich in Funktion Open vor CDBPropSet dbinit(DBPROPSET_DBINIT); Fehler: Unbehandelte Ausnahme in ......exe 0xC0000005: Access Violation Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.