Hallo,
die folgende Frage dürfte sich für viele von Euch wohl eher lächerlich anhören, aber vielleicht habt Ihr ja kurz Zeit... (wüßte nicht, wo ich sonst gezielt Antworten auf diese Frage finden sollte)
ich bin grade dabei eine Anwendung in VB.net zu implementieren, die vermutlich 5-6 Usern auf versch. Clients die Möglichkeit bietet, Buchungen auf einen zentralen Datenbestand vorzunehmen. Dieser ist als Accessdatenbank angelegt.
Die Verbindung wird jeweils über odbcConnection.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= ...
aufgebaut. Die Datenbank besitzt ca. 30 Tabellen.
Meine Frage ist nun, ob es ratsam wäre anstelle dieser mdb-Datei eine MSDE Datenbank zu benutzen und zwar aus folgenden Aspekten:
1) Sicherheit. Momentan bin ich hierbei auf dem Stand Null! Alle Benutzer haben Lese und Schreibrechte auf das entsprechende Verzeichnis. Das heißt die Datei ist nicht grade die sicherste Lösung. Auch beim Login: hier nutze ich die daten aus einer benutzertabelle zum abgleich. die anwendung reguliert dabei die rechte des Bentzers. Rein Datenbanktechnisch haben sie aber alle die gleichen Rechte.
Für MSDE hatte ich mir überlegt den Anwender über eine ähnliche benutzertabelle zu authentifizieren, die db verbindung aber weiterhin überall mit dem gleichen db-benutzer account vorzunehmen. Die Accountdaten muß ich ja dann irgendwo lokal beim Client ablegen. Das Problem hätte ich dann, wenn ein Benutzer (der vielleicht auf anwendungsebene niedrige Rechte hat) in Besitz dieser Informationen kommt und "per Hand" höchst riskante SQLAnweisungen rausschicken kann... uiuiui...
Andererseits frage ich mich, wie hoch der aufwand wäre, beide benutzertabellen zu kombinieren? andere ideen habe ich aufgrund meines beschränkten erfahrungsschatzes nicht bzw. ich kann nicht einmal die richtige lösung abschätzen. was macht man in einem solchen fall gemeinhin? (ich meine jetzt nicht bei niedrigem Erfahrungsschatz, sondern bei der Benutzerverwaltung :-)
2) Verbindungsaufbau. was mache ich, wenn ich keine festen ipadressen habe? (liegt in diesem fall zwar vor, aber prinzipiell)
3) In anderen Beiträgen in diesem Forum habe ich von einem Leistungsbruch bei mehr als 5 Nutzern gelesen. Ich nehme an, dass es sich dabei um gleichzeitig angemeldete und agierende Nutzer handelt. Ist das richtig? Es wird vermutlich selten vorkommen, dass 5 Zugriffe gleichzeitig auftreten.
Ich nutze für Select-Anweisungen den OdbcDataAdapter, bei Insert und Update baue ich vor der OdbcCommand.ExecuteNonQuery eine Verbindung auf und hinterher wieder ab.
4) Datentypen. Ich hatte mal in entfernter Vergangenheit ein Intermezzo mit VB und dem SQLServer. Woran ich mich erinnern kann, ist, dass ich meine Fließkommazahlen des Typs Double aufgrund der deutschen Zahlenformatierung mit dem "," als Dezimaltrennzeichen nicht korrekt in die Datenbank abspeichern konnte und umgekehrt eingetragene Werte nicht korrekt auslesen konnte. Weiter hatte ich mich damals mit dem Problem nicht beschäftigt.
Werde ich die gleiche Problemstellung auch bei MSDE haben? Und wenn ja, was ist die Lösung? Wie sieht es mit den anderen Datentypen aus (z.B. Boolean?)
Ich danke Euch im Voraus für die Beantwortung meiner Fragen. Kenne mich mit Datenbanken eigentlich gar nicht aus...
Viele Grüße
Alborz
die folgende Frage dürfte sich für viele von Euch wohl eher lächerlich anhören, aber vielleicht habt Ihr ja kurz Zeit... (wüßte nicht, wo ich sonst gezielt Antworten auf diese Frage finden sollte)
ich bin grade dabei eine Anwendung in VB.net zu implementieren, die vermutlich 5-6 Usern auf versch. Clients die Möglichkeit bietet, Buchungen auf einen zentralen Datenbestand vorzunehmen. Dieser ist als Accessdatenbank angelegt.
Die Verbindung wird jeweils über odbcConnection.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ= ...
aufgebaut. Die Datenbank besitzt ca. 30 Tabellen.
Meine Frage ist nun, ob es ratsam wäre anstelle dieser mdb-Datei eine MSDE Datenbank zu benutzen und zwar aus folgenden Aspekten:
1) Sicherheit. Momentan bin ich hierbei auf dem Stand Null! Alle Benutzer haben Lese und Schreibrechte auf das entsprechende Verzeichnis. Das heißt die Datei ist nicht grade die sicherste Lösung. Auch beim Login: hier nutze ich die daten aus einer benutzertabelle zum abgleich. die anwendung reguliert dabei die rechte des Bentzers. Rein Datenbanktechnisch haben sie aber alle die gleichen Rechte.
Für MSDE hatte ich mir überlegt den Anwender über eine ähnliche benutzertabelle zu authentifizieren, die db verbindung aber weiterhin überall mit dem gleichen db-benutzer account vorzunehmen. Die Accountdaten muß ich ja dann irgendwo lokal beim Client ablegen. Das Problem hätte ich dann, wenn ein Benutzer (der vielleicht auf anwendungsebene niedrige Rechte hat) in Besitz dieser Informationen kommt und "per Hand" höchst riskante SQLAnweisungen rausschicken kann... uiuiui...
Andererseits frage ich mich, wie hoch der aufwand wäre, beide benutzertabellen zu kombinieren? andere ideen habe ich aufgrund meines beschränkten erfahrungsschatzes nicht bzw. ich kann nicht einmal die richtige lösung abschätzen. was macht man in einem solchen fall gemeinhin? (ich meine jetzt nicht bei niedrigem Erfahrungsschatz, sondern bei der Benutzerverwaltung :-)
2) Verbindungsaufbau. was mache ich, wenn ich keine festen ipadressen habe? (liegt in diesem fall zwar vor, aber prinzipiell)
3) In anderen Beiträgen in diesem Forum habe ich von einem Leistungsbruch bei mehr als 5 Nutzern gelesen. Ich nehme an, dass es sich dabei um gleichzeitig angemeldete und agierende Nutzer handelt. Ist das richtig? Es wird vermutlich selten vorkommen, dass 5 Zugriffe gleichzeitig auftreten.
Ich nutze für Select-Anweisungen den OdbcDataAdapter, bei Insert und Update baue ich vor der OdbcCommand.ExecuteNonQuery eine Verbindung auf und hinterher wieder ab.
4) Datentypen. Ich hatte mal in entfernter Vergangenheit ein Intermezzo mit VB und dem SQLServer. Woran ich mich erinnern kann, ist, dass ich meine Fließkommazahlen des Typs Double aufgrund der deutschen Zahlenformatierung mit dem "," als Dezimaltrennzeichen nicht korrekt in die Datenbank abspeichern konnte und umgekehrt eingetragene Werte nicht korrekt auslesen konnte. Weiter hatte ich mich damals mit dem Problem nicht beschäftigt.
Werde ich die gleiche Problemstellung auch bei MSDE haben? Und wenn ja, was ist die Lösung? Wie sieht es mit den anderen Datentypen aus (z.B. Boolean?)
Ich danke Euch im Voraus für die Beantwortung meiner Fragen. Kenne mich mit Datenbanken eigentlich gar nicht aus...
Viele Grüße
Alborz
Comment