Matthias Bohnstedt: Access2003-Leistungsfähigkeit; ASP; Benutzterkonten

Hallo,

Ich hab verschiedene Fragen über das Anbinden von SQL Datenbanken über ASP Seiten. Bzw. deren Tauglichkeit für ein Intranet.

Ich habe eine Datenbank mit Access 2003 erstellt und möchte mit deren Hilfe die Intranetseiten erstellen.

Im Prinzip ist es eine Linkliste mit PDF-Dokumenten die Seite lädt also Über vordefinierte Abfragen die entsprechenden Einträge aus der Datenbank und erstellt daraus den "dynamischen" Teil der Website.

Im Moment passiert das über eine ASP Seite mit VB Script. Im Test funktionierte die Anbindung gut, aber wenn mehrere Leute auf die Datenbank zugreifen ( Also wenn die DB geöffnet ist, unabhönig ob direkt in Accsess oder über ASP, geht die Seite nirgendwo anders) dann funktzt es nichtmehr.

Meine Fragen sind die:

1. Die Datenbank kennt im Moment nur den benutzter "admin" der vollzugriff auf die Komplette Datenbank hat. Die ASP- Seiten verbinden sich über diesen DSN benutzter String auf die Datenbank die Datenbank liefter die Ergebnisse zurück und erstellt die Seite.

Das ganze läuft über einen MDB-access Treiber.

-->  Technische Frage: Der Client ruft die Seite auf. Dann "reden" nur noch Server und Datenbank mit einander. Sprich der Server macht eine Verbindung über den "Admin" Account und will die Abfragen machen. Oder Passiert da Client seitig irgendwas? Sprich der Server gibt den Benutzter String an den Client und der Client fragt dann die Datenbank?

-->  Frage 2:
     Um diese Abfragen richtig auszuführen, braucht der Client Nutzer irgendwelche Schreib oder lesrechte? Da ja eigentlich nur der Server mit der Datenbank agieren soll reicht doch eine Serverseitige Rechtevergabe, unabhönig was der Client auf dem Server darf oder? Wie greift die in accses eingestellten Rechte mit den Auf dem Server liegenden Rechte ineinander.

Sprich wenn ich mich mit einen Account auf die Datenbank connecte der  eigentlich keine Rechte besitzt um die "NAME.mdb" Datei zu beschreiben aber den in der Datenbank hinterlegten account " Admin" benutzte, kann ich dann Änderungen ausführen? Oder sind zwingend beide Rechte nötig? ( Also auf Filebasis, und Interner Access Basis?)

2. Grundlegend zur Leistungsfähigkeit einer Accsess mdb Datenbank:

Meine Überlegung war das ich einen Benutzer einrichte "Jeder" mit nur Lesezugriff. Wenn dieser Benutzer "Jeder" sich sagen wir mal 20 mal gleichzeitig mit der Datenbank verbindet, geht das überhaupt. Ich will wissen ob das Porblem das im moment immer nur eine ASP Seite geht damit zusammen hängt das die Datenbank zuviele Verbindungen von einem "ADMIN" bekommt, und dadurch für andere Nutzer gesperrt ist.

Die Fehlermeldung die kommt ist im moment das er einen Fehler im DSN string findet sobald die Seite schon auf ist. Daher liegt es nahe das er Probleme damit hat mehrfach diese Verbinundg aufzubauen. Umgehe ich das mit einen eingeschränkten Account inhalb der Datenbank?

Außerdem, wie viele hält eine derartige Datenbank aus? Und kann ich dem Server sagen das er nicht multiple Zugriffe machen soll sondern EINEN Zugang permanent offen hält über den dann alle Abfragen laufen. Scheinbar verbindet sich ja JEDE ASP Seite einzeln mit der Datenbank.

3. Mir steht auch ein sehr leistungsfähiger SQL-Server zu verfügung. Ich hatte über Accsess2003 auch schon die mdb mit den SQL Server verbunden. Aber ich konnte keine Änderungen machen. Nur direkt auf dem Server. Kann ich über ein Acc2003 Projekt nicht Direkt auf dem Server arbeiten. Scheinbar lieferte er mir immer nur ein "View" der Datenbank auf dem Server. Ich hab der Acc2003 Projekt gesagt verbinde dich mit den höchsten schreibrechten auf den Server ( Weil ich will ja drauf arbeiten) aber er sagt mir ich darf keine Datensätze ändern.
Auf dem Server sind komplette schreibe und Leserechte für die DB, sogar für Public, aber es bringt nichts.

( Ja, das ist für die Sicherheit jetzt extrem "Suboptimal" aber die auf dem MDB Projekt darf nur ein ADmin arbeiten, und wir sind in einem Isolierten Intranet, daher wären solche Lücken vertretbar und später kann man dies ja immernoch ändern)

Desweiteren ist es Möglich das ganze unter PHP zum laufen zu bringen, nur dann müsste auf dem Server doch eine SQL to Php Treiber installiert werden weil so wie ich das verstehe PHP eigentlich nur mit MYsql läuft oder? Ist das nunkompliziert umzusetzen? Und vor allem schnell.

Abgabge Termien für das funktionsfähige Intranet ist diesen Freitag stehe also leicht unter Zeitdruck.

Wobei es  ja "nur" ein technisches Problem ist. Das kann doch nicht so schwer sein. Reicht die Idee mit dem "Lesebenutzer" um dieses "sperren" der Datenbank zu umgehen. Und komm ich auch ohne SQL Server aus (  Dann müsste ich mich um die Anbindung kümmern, im Moment geht nur ein manueller Import, und das ist nicht das wo ich eigentlich hin will)

Wäre echt über jeden Tip dankbar Leute!

  1. Hallo Matthias,

    Ich habe eine Datenbank mit Access 2003 erstellt und möchte mit deren Hilfe die Intranetseiten erstellen.

    das ist prinzipiell kein Problem.

    Im Moment passiert das über eine ASP Seite mit VB Script.

    Also IIS? Welche Version eigentlich? Und warum kein ASP.NET?

    Im Test funktionierte die Anbindung gut, aber wenn mehrere Leute auf die Datenbank zugreifen ( Also wenn die DB geöffnet ist, unabhönig ob direkt in Accsess oder über ASP, geht die Seite nirgendwo anders) dann funktzt es nichtmehr.

    Du machst etwas falsch - und zeigst überhaupt keinen Code.

    1. Die Datenbank kennt im Moment nur den benutzter "admin" der vollzugriff auf die Komplette Datenbank hat. Die ASP- Seiten verbinden sich über diesen DSN benutzter String auf die Datenbank die Datenbank liefter die Ergebnisse zurück und erstellt die Seite.

    Das ganze läuft über einen MDB-access Treiber.

    Was ist ein MDB-Access-Treiber? Der Jet-ODBC-Treiber?
    Hinweis: Das Datenbankmanagementsystem hinter MS Access ist die Jet-Engine.

    Du solltest den Jet-OLE-DB-Treiber anstelle des Jet-ODBC-Treibers verwenden, siehe http://support.microsoft.com/default.aspx?scid=kb;en-us;299974.
    Bist Du Dir sicher, dass Du über die dort geforderten Kenntnisse verfügst:

    "Advanced: Requires expert coding, interoperability, and multiuser skills."

    -->  Technische Frage: Der Client ruft die Seite auf. Dann "reden" nur noch Server und Datenbank mit einander. Sprich der Server macht eine Verbindung über den "Admin" Account und will die Abfragen machen.

    Ja, so ungefähr.

    Oder Passiert da Client seitig irgendwas? Sprich der Server gibt den Benutzter String an den Client und der Client fragt dann die Datenbank?

    Nein. Es könnte allerdings sein, dass der Client Informationen über den angemeldeten Windows-Benutzer mitschickt - und der IIS verwendet diese,
    um auf die Datenbankdatei zuzugreifen. Das hängt von der Konfiguration des IIS ab.

    Um diese Abfragen richtig auszuführen, braucht der Client Nutzer irgendwelche Schreib oder lesrechte?

    Normalerweise nicht, das hängt aber von der IIS-Konfiguration ab, siehe vorangegangene Anmerkungen.

    Da ja eigentlich nur der Server mit der Datenbank agieren soll reicht doch eine Serverseitige Rechtevergabe, unabhönig was der Client auf dem Server darf oder? Wie greift die in accses eingestellten Rechte mit den Auf dem Server liegenden Rechte ineinander.

    Das ist abhängig von der IIS-Konfiguration. Du kannst den IIS veranlassen, mit dem anonymen Benutzer zu arbeiten, das wäre in Deinem Fall vermutlich zu empfehlen. Du kannst den IIS veranlassen, mit der Benutzerkennung zu arbeiten, die die Seite angefordert hat. In Deinem Fall vermutlich ungeeignet.

    Sprich wenn ich mich mit einen Account auf die Datenbank connecte der  eigentlich keine Rechte besitzt um die "NAME.mdb" Datei zu beschreiben aber den in der Datenbank hinterlegten account " Admin" benutzte, kann ich dann Änderungen ausführen? Oder sind zwingend beide Rechte nötig? ( Also auf Filebasis, und Interner Access Basis?)

    Selbstverständlich muss der Benutzer, unter dessen Kennung der IIS auf die MDB-Datei zugreift, auf Dateibasis Zugriffsrechte auf diese Datei haben. Das ist der typische Nachteil der Verwendung einer Desktopdatenbank wie Access mit der Jet-Engine.

    1. Grundlegend zur Leistungsfähigkeit einer Accsess mdb Datenbank:

    Meine Überlegung war das ich einen Benutzer einrichte "Jeder" mit nur Lesezugriff. Wenn dieser Benutzer "Jeder" sich sagen wir mal 20 mal gleichzeitig mit der Datenbank verbindet, geht das überhaupt.

    Ja klar geht das. Eine von mir vor Jahren entwickelte Access-Anwendung hatte ca. 100 Anwender - funktionierte wunderbar (kein Webumfeld, aber das ist dafür auch egal).

    Ich will wissen ob das Porblem das im moment immer nur eine ASP Seite geht damit zusammen hängt das die Datenbank zuviele Verbindungen von einem "ADMIN" bekommt, und dadurch für andere Nutzer gesperrt ist.

    Du scheinst die Datenbank exklusiv zu öffnen. Das ist in einer Multiuserumgebung ein Fehler.

    Die Fehlermeldung die kommt ist im moment das er einen Fehler im DSN string findet sobald die Seite schon auf ist. Daher liegt es nahe das er Probleme damit hat mehrfach diese Verbinundg aufzubauen. Umgehe ich das mit einen eingeschränkten Account inhalb der Datenbank?

    Nein, Du umgehst das, indem Du die Datenbank nicht exklusiv öffnest.

    Außerdem, wie viele hält eine derartige Datenbank aus?

    Siehe verlinkter Artikel

    1. Mir steht auch ein sehr leistungsfähiger SQL-Server zu verfügung.

    Dann verwende doch diesen. Wenn ich einen MS SQL-Server zur Verfügung habe, dann plage ich mich nicht mit MS Access herum, wenn es sich vermeiden läßt.

    Ich hatte über Accsess2003 auch schon die mdb mit den SQL Server verbunden. Aber ich konnte keine Änderungen machen. Nur direkt auf dem Server. Kann ich über ein Acc2003 Projekt nicht Direkt auf dem Server arbeiten. Scheinbar lieferte er mir immer nur ein "View" der Datenbank auf dem Server.

    Sorry, ein View ist das, was MS Access als "Auswahlabfrage" bezeichnet.

    Ich hab der Acc2003 Projekt gesagt verbinde dich mit den höchsten schreibrechten auf den Server ( Weil ich will ja drauf arbeiten) aber er sagt mir ich darf keine Datensätze ändern.

    Du solltest den entsprechenden Assistenten verwenden, um die Datenbank umzuwandeln.

    Desweiteren ist es Möglich das ganze unter PHP zum laufen zu bringen, nur dann müsste auf dem Server doch eine SQL to Php Treiber installiert werden

    Auf Windows ist der ODBC-Zugriff standardmäßig in PHP einkompiliert, MySQL benötigt dagegen seit PHP5 eine Extension.

    weil so wie ich das verstehe PHP eigentlich nur mit MYsql läuft oder?

    Das verstehst Du völlig falsch. Der Zugriff auf andere Datenbankmanagementsysteme funktioniert unter PHP wunderbar und nicht komplizierter als der auf MySQL. Am einfachsten ist der Zugriff auf SQLite.

    Ist das nunkompliziert umzusetzen? Und vor allem schnell.

    Bei den Kenntnissen, die ich bei Dir vermute, ist es kompliziert, dies umzusetzen. Und erst recht nicht schnell.

    Abgabge Termien für das funktionsfähige Intranet ist diesen Freitag stehe also leicht unter Zeitdruck.

    *g* Warum hast Du dann diese Aufgabe übernommen, wenn Dir die Kenntnisse fehlen?

    Wobei es  ja "nur" ein technisches Problem ist. Das kann doch nicht so schwer sein. Reicht die Idee mit dem "Lesebenutzer" um dieses "sperren" der Datenbank zu umgehen.

    Nein. Auch dieser kann die Datenbank exklusiv öffnen.

    Und komm ich auch ohne SQL Server aus

    Ja.

    Freundliche Grüße

    Vinzenz