ODBC MS REMOTE Verbindung mit Access DB
Hallo,
und zwar habe ich folgendes Problem:
Ein Kollege von mir programmierte eine Online Reservierung mittels ASPx (C#).
Die Webapplikation greift auf die lokale Access Datenbank zu, um Daten zu öffnen / schließen / schreiben.
Also die Applikation + Datenbank liegen direkt auf dieser Maschine lokal.
Jetzt möchte ich aber die Applikation auf einen richtigen Server legen,
und leider ist es mir nicht möglich die Datenbank auf den Server auch zu verlegen,
da dies die Datenbank von einer am lokal laufenden Software ist, wo man sich DVD's direkt vorm Automaten
ausleihen kann, und diese Software unterstützt rein nur localhost.
Deswegen muss ich von der Ferne auf diese Datenbank mittels dieser Applikation zugreifen können.
Aber leider funktioniert das nicht, lokal muss ich ein System DSN (ODBC) angeben, das nach C:/database.mdb zeigt.
Hier die web.config (mein missglückter Versuch):
...
<add name="ConnectionString" connectionString="Provider=MS Remote;RemoteServer=http://www.url-wo-die-datenbank-liegt.com;Remote Provider=Microsoft.Jet.OLEDB.4.0;DSN=MainDatabase;uid=Admin;pwd=dbpass" />
...
Hier die web.config die funktioniert (Lokal (Applikation+Datenbank)):
...
<add name="ConnectionString" connectionString="Dsn=MainDatabase;uid=Admin;pwd=dbpass" providerName="System.Data.Odbc" />
...
Was mach ich falsch? Der Browser gibt mir immer raus:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben
Lokal muss ich ja dann keinen ODBC System DSN angeben, oder? Wenn ja, welchen Typ?
Oder muss ich zuerst ein Netzwerklaufwerk verbinden? Oder doch mit WebDAV?
Aussehen zur Zeit tut es so:
Der Kunde geht auf die Internetreservierung http://www.meine-reservierung.com/.
Die Applikation baut die Verbindung zum lokalen ODBC System DSN C:/database.mdb her,
und der Kunde kann mit der Applikation arbeiten.
Aussehen sollte es dann so:
Der Kunde geht auf die Internetreservierung http://www.meine-reservierung.com/.
Die Applikation baut die Verbindung zum entfernten ODBC System DSN dort auf d:/database.mdb (www.my-db-server.com)
und gibt die Daten zurück.
Grund:
Das System ist jetzt ein Standalone System, läuft nur auf den eigenen Automaten.
Diese Applikationen sollten halt vermietet werden, und deswegen sollte der Quellcode nicht am Automaten direkt sein,
sondern rein nur die Datenbank damit die Applikation vom Server auf die Datenbank am Automaten zugreifen kann
Was muss ich am Automaten direkt beim IIS installieren/einstellen und was am Server?
Hoffe Ihr könnt mir helfen, ich bin am verzweifeln. Mein Kollege der ist nicht hier, und ich selbst schaff das nicht.
Kenne mich nur mit PHP einigermassen gut aus, aber zu 0% mit ASP und SQL Strings...
Vielen Dank!
glg mAx
und zwar habe ich folgendes Problem:
Ein Kollege von mir programmierte eine Online Reservierung mittels ASPx (C#).
Die Webapplikation greift auf die lokale Access Datenbank zu, um Daten zu öffnen / schließen / schreiben.
Also die Applikation + Datenbank liegen direkt auf dieser Maschine lokal.
Jetzt möchte ich aber die Applikation auf einen richtigen Server legen,
und leider ist es mir nicht möglich die Datenbank auf den Server auch zu verlegen,
da dies die Datenbank von einer am lokal laufenden Software ist, wo man sich DVD's direkt vorm Automaten
ausleihen kann, und diese Software unterstützt rein nur localhost.
Deswegen muss ich von der Ferne auf diese Datenbank mittels dieser Applikation zugreifen können.
Aber leider funktioniert das nicht, lokal muss ich ein System DSN (ODBC) angeben, das nach C:/database.mdb zeigt.
Hier die web.config (mein missglückter Versuch):
...
<add name="ConnectionString" connectionString="Provider=MS Remote;RemoteServer=http://www.url-wo-die-datenbank-liegt.com;Remote Provider=Microsoft.Jet.OLEDB.4.0;DSN=MainDatabase;uid=Admin;pwd=dbpass" />
...
Hier die web.config die funktioniert (Lokal (Applikation+Datenbank)):
...
<add name="ConnectionString" connectionString="Dsn=MainDatabase;uid=Admin;pwd=dbpass" providerName="System.Data.Odbc" />
...
Was mach ich falsch? Der Browser gibt mir immer raus:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben
Lokal muss ich ja dann keinen ODBC System DSN angeben, oder? Wenn ja, welchen Typ?
Oder muss ich zuerst ein Netzwerklaufwerk verbinden? Oder doch mit WebDAV?
Aussehen zur Zeit tut es so:
Der Kunde geht auf die Internetreservierung http://www.meine-reservierung.com/.
Die Applikation baut die Verbindung zum lokalen ODBC System DSN C:/database.mdb her,
und der Kunde kann mit der Applikation arbeiten.
Aussehen sollte es dann so:
Der Kunde geht auf die Internetreservierung http://www.meine-reservierung.com/.
Die Applikation baut die Verbindung zum entfernten ODBC System DSN dort auf d:/database.mdb (www.my-db-server.com)
und gibt die Daten zurück.
Grund:
Das System ist jetzt ein Standalone System, läuft nur auf den eigenen Automaten.
Diese Applikationen sollten halt vermietet werden, und deswegen sollte der Quellcode nicht am Automaten direkt sein,
sondern rein nur die Datenbank damit die Applikation vom Server auf die Datenbank am Automaten zugreifen kann
Was muss ich am Automaten direkt beim IIS installieren/einstellen und was am Server?
Hoffe Ihr könnt mir helfen, ich bin am verzweifeln. Mein Kollege der ist nicht hier, und ich selbst schaff das nicht.
Kenne mich nur mit PHP einigermassen gut aus, aber zu 0% mit ASP und SQL Strings...
Vielen Dank!
glg mAx
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 68316
Url: https://administrator.de/forum/odbc-ms-remote-verbindung-mit-access-db-68316.html
Ausgedruckt am: 11.04.2025 um 18:04 Uhr
3 Kommentare
Neuester Kommentar
In ASP kenne ich mich nicht aus, das mal vorneweg.
Der Jet ODBC Treiber braucht ein Laufwerksmapping mit Laufwerksbuchstabe (zumindestens habe ich es nie anders hinbekommen). Also direkt irgendwas mit http:// geht nicht. Wenn WebDAV einen LW-Buchstaben stellt, sollte es theoretisch gehen.
Zugriff auf entfernte Datenbanken geht dann wie lokal auch:
<add name="ConnectionString" connectionString="Dsn=RemoteDatabase;uid=Admin;pwd=dbpass" providerName="System.Data.Odbc" />
Nur das in der Definition der RemoteDatabase DSN im ODBC Administrator die entfernte Datenbank auf dem gemappten LW angegeben ist statt der c:\database.mdb.
Und letztlich:
Es gibt keine ineffizientere Variante auf Daten zuzugreifen als auf eine nicht lokale MDB Datei.
Die Daten werden nämlich auf Deinem Rechner verarbeitet, ein Select welches z.B. nur eine Zeile zurückgibt sorgt trotzdem erstmal dafür, daß die gesamte Tabelle gelesen wird. Das über Internet ist kein Spaß. Schon im lokalen Netzwerk kann man mit Access auf Netzlaufwerken das Netzwerk schier zum Zusammenbruch bringen.
Idee:
Auf den lokalen Systemen eine MSDE oder SQL 2005 Express installieren und es über den fahren. Der verarbeitet die SQL Statements nämlich bei sich und überträgt nur noch die gewünschten Daten.
Der Jet ODBC Treiber braucht ein Laufwerksmapping mit Laufwerksbuchstabe (zumindestens habe ich es nie anders hinbekommen). Also direkt irgendwas mit http:// geht nicht. Wenn WebDAV einen LW-Buchstaben stellt, sollte es theoretisch gehen.
Zugriff auf entfernte Datenbanken geht dann wie lokal auch:
<add name="ConnectionString" connectionString="Dsn=RemoteDatabase;uid=Admin;pwd=dbpass" providerName="System.Data.Odbc" />
Nur das in der Definition der RemoteDatabase DSN im ODBC Administrator die entfernte Datenbank auf dem gemappten LW angegeben ist statt der c:\database.mdb.
Und letztlich:
Es gibt keine ineffizientere Variante auf Daten zuzugreifen als auf eine nicht lokale MDB Datei.
Die Daten werden nämlich auf Deinem Rechner verarbeitet, ein Select welches z.B. nur eine Zeile zurückgibt sorgt trotzdem erstmal dafür, daß die gesamte Tabelle gelesen wird. Das über Internet ist kein Spaß. Schon im lokalen Netzwerk kann man mit Access auf Netzlaufwerken das Netzwerk schier zum Zusammenbruch bringen.
Idee:
Auf den lokalen Systemen eine MSDE oder SQL 2005 Express installieren und es über den fahren. Der verarbeitet die SQL Statements nämlich bei sich und überträgt nur noch die gewünschten Daten.