iceget
Goto Top

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

Content-Key: 68316

Url: https://administrator.de/contentid/68316

Printed on: April 25, 2024 at 06:04 o'clock

Member: AndreasHoster
AndreasHoster Sep 11, 2007 at 15:46:26 (UTC)
Goto Top
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.
Member: iceget
iceget Sep 11, 2007 at 18:30:34 (UTC)
Goto Top
Hallo und Danke!

Okay, aber die Automatensoftware arbeitet nur mit Access!
Also vielleicht kenne ich mich nicht so aus, aber geht das, das man das ganze umwandelt?
Also die Anfragen die in Access kommen, dann über SQL 2005 Express?

Oder wie kann ich das am besten anstellen?

Kannst Du mir einfach ein kleines Beispiel schildern, wie ich das mache,
damit ich auch begreife wie das in etwa nur funktioniert?

Vielen Dank schon jetzt!!

lg mAx
Member: iceget
iceget Feb 25, 2013 at 08:26:19 (UTC)
Goto Top
Hallo,

danke für deine damalige Antwort!

Ich lese gerade meine alten Threads durch.
Habe aber mittlerweile eine Sync Software in C# gecodet die in Echtzeit (sobald er eine Änderung lokal an der Access merkt) die MySQL Datenbank abgleicht.

So habe ich das nun gelöst face-smile

Danke

lg iceget

Zitat von @AndreasHoster:
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.