2013-03-13 4 views
7

Ich habe eine .net App Ich wurde gefragt, zu modifizieren, verwendet es .net Framework 2.0ODBC Oracle Fehler

Ich habe Setup eine ODBC-DSN mit den Verbindungsdetails für unsere Oracle DB auf meinem lokalen Rechner, testeten die Verbindung und es funktioniert gut.

Jetzt lief ich meine Anwendung, es ging ohne Probleme und fertig, ich hatte unser Fehlerprotokoll überprüft und ein paar Fehler unabhängig von diesem Problem gefunden, aber dieser Fehler nicht angezeigt.

Also habe ich die App erneut mit Breakpoints gestartet, um zu diesen Fehlern zu kommen. Dieses Mal ist es mit dem folgenden Fehler abgestürzt

ERROR [IM004] [Microsoft] [ODBC Driver Manager] Fahrer SQLAllocHandle auf SQL_HANDLE_ENV gescheitert

Nun, was mich zu diesem Thema ist immer, dass es lief einfach gut noch nicht mal 10 Minuten und ich habe nur einen Breakpoint hinzugefügt.

Ich habe ein paar Antworten gefunden und gab ihnen alle eine Chance.

  1. stelle ich das Lesen/Ausführen auf dem Oracle-Treiberordner aus als auf die Berechtigungen zurückzusetzen, und es machte keinen Unterschied
  2. ich den „Pfad“ Umgebungsvariable geprüft und es ist
  3. Mit dem ODBC Fein Administrator Ich habe die Verbindung ohne Fehler getestet.
  4. Überprüft die Verbindungszeichenfolge zeigt auf den DSN ist immer noch korrekt 5. Listenelement
  5. Überprüft meine App ist Setup 32 Bit ausführen, wie der Treiber 32 Bit ist.

Das einzige, was ich habe, ist nicht getan zu speichern, neu starten Computer herunter und versuchen Sie es erneut .. Was ich nach diesem Beitrag richtig machen, wenn es funktioniert ich, dass wird Post.

Wie auch immer, wenn jemand eine Idee hat, was dieses Verhalten verursachen könnte, wäre ich Ihnen sehr dankbar.

Computer-Win7 ist, .NET Framework 2.0, es ist VB.net, Oracle-Treiber ist 10 g (10.2)

Update: okay, ich das ODBC-Administrator verwendet, um das DSN zu entfernen und es wieder aufzubauen. Ich habe meine App ausgeführt und es hat funktioniert.

Ich kam später heute nach keine Änderungen zurück und führte die Anwendung erneut und bekam den Fehler erneut. versuchte, den DSN wieder aufzubauen und es hat nicht geholfen, ich habe versucht, neu zu starten, und es hat nicht geholfen.

Unten ist die Stapelspur.

StackTrace: 
     at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) 
     at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle) 
     at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions) 
     at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) 
     at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) 
     at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 
     at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
     at System.Data.Odbc.OdbcConnection.Open() 
+0

entsorgst du deine Verbindungen richtig? –

+0

Ich habe das überprüft, ich dachte es wäre vielleicht nicht, aber es scheint so zu sein, dass ich nichts finden kann, was offen ist und nicht geschlossen wird. – sarchbold

+2

Können Sie versuchen, ein sehr einfaches Programm nur mit den bloßen ODBC-Aufrufe zu erstellen, und sehen, ob das funktioniert? Microsoft hatte auch eine App namens ODBCTest, mit der Sie alle API-Funktionen direkt für Low-Level-Tests aufrufen können. Sehen Sie, ob Sie es finden und es versuchen können. Haben Sie auch versucht, die ODBC-Ablaufverfolgung über das ODBC-Admin-Steuerfeld einzuschalten und zu sehen, was protokolliert wird? – OldProgrammer

Antwort

0

Führen Sie dies auf einem Remote-Desktop aus? Wenn dies der Fall ist, müssen Sie der lokalen Richtlinie möglicherweise "Globale Objekte erstellen" für Remotedesktopbenutzer hinzufügen.

Wenn Sie sich auf einem lokalen Desktop befinden, überprüfen Sie die Version des ODBC-Treibers, den Sie ausführen. Wenn es etwas älter als 11.2.x.x ist, sollten Sie wahrscheinlich einen neueren ODBC-Treiber von Oracle installieren (verwenden Sie nicht den Microsoft Oracle ODBC-Treiber - es hat Probleme).