Datenbank

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Hallo Community,

    ich habe ein Programm das derzeit auf eine Access Datenbank zugreift (lesend und schreibend) und zwischen 7-10 weitere Programme die ständig aus dieser lesen. Das Problem ist das die Access Datenbank in einem Netzlaufwerk liegt und dadurch dauernd beschädigt wird.

    Da ich sonst absolut keine Erfahrungen mit Datenbanken habe würde ich euch bitten mir zu beschreiben wie ich das anstelle?
    Welche SQL od. MySQL Programme muss ich da nehmen und wie sieht der Connection string aus?

    Versuche derzeit mein glück mit VB Express und einer .mdf Datei ... diese will er mir aber am netzlaufwerk nicht übernehmen.

    Wie gesagt kenn ich mich mit SQL gar nicht aus also bitte eine detailierte beschreibung

    Besten Dank
    zu beschreiben wie ich das anstelle?

    Was genau hast du denn eigentlich vor? In deinem Post ist gar keine richtige Fragestellung, ich rate aber einfach mal und denke, du willst auf eine andere DB Variante umsteigen...

    Jo, Access ist halt nicht so auf multiple Zugriffe und Netzlaufwerke ausgelegt. Da geht dann gerne mal auch was kaputt. Der MS SQL Server hingegen sollte damit keine Probleme haben...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    VB1963 schrieb:

    republicx schrieb:

    Da ich sonst absolut keine Erfahrungen mit Datenbanken habe würde ich euch bitten mir zu beschreiben wie ich das anstelle?
    Da kann ich nur Werbung für @ErfinderDesRades machen: Datenverarbeitungs-Vorraussetzungen


    Da es schon ein Programm gibt, muss er sich keine YouTube Videos rein ziehen.

    Hierfür würde sich klassisch ein MS SQL Server anbieten. Wenn Access für die Datenmengen gereicht hat, dann reicht auch die Express Edition vom SQL Server.

    Du musst halt schauen wann, wo und wie auf die Daten aus der Access DB zugegriffen wird. Sowohl lesend wie schreibend.
    Die Art und Weise wie das gemacht wird bestimmt die Änderungen am Code um auf einen MS SQL Server zu zugreifen.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    mrMo schrieb:

    zu beschreiben wie ich das anstelle?

    Was genau hast du denn eigentlich vor? In deinem Post ist gar keine richtige Fragestellung, ich rate aber einfach mal und denke, du willst auf eine andere DB Variante umsteigen...

    Jo, Access ist halt nicht so auf multiple Zugriffe und Netzlaufwerke ausgelegt. Da geht dann gerne mal auch was kaputt. Der MS SQL Server hingegen sollte damit keine Probleme haben...


    Ich habe ein Programm das von einem Server Daten lädt, in eine Access Datenbank schreibt und mit diesen Daten zu gewissen Uhrzeiten aktionen ausführt. Die Daten vom Server werden alle X Minuten aktualisiert da die sich laufend ändern, also Zeile kommt dazu, Zeile verschwindet, Zeile ändert sich...
    DIe Daten in der DB werden dann wiederum durch verschiedene aktionen verarbeitet (Das diese sich nicht überschneiden hab ich bereits gelöst).

    Weiteres gibt es ein weiteres Programm das aber auf mehreren Rechnern geöffnet ist und dieses Programm liest wiederrum alle X minuten gewisse Tabellen der Datenbank aus.
    Die Access liegt in einem Netzlaufwerk und wird so quasie von 8 oder mehr Rechnern benützt und geht daher leider des öfteren kaputt.




    petaod schrieb:

    republicx schrieb:

    Versuche derzeit mein glück mit VB Express und einer .mdf Datei ... diese will er mir aber am netzlaufwerk nicht übernehmen

    Wenn du keinen Datenbankserver, sondern eine dateibasierte DB suchst, verwende SQLite.


    Brauch ich einen DB Server? Was macht der genau und vor allem müsst ich diesen dan irgendwo installieren außer auf dem Rechner wo ich das Programm entwickle? Leider hab ich außer mit Access sonst mit keinen DB erfahrungen.




    MrTrebron schrieb:

    VB1963 schrieb:

    republicx schrieb:

    Da ich sonst absolut keine Erfahrungen mit Datenbanken habe würde ich euch bitten mir zu beschreiben wie ich das anstelle?
    Da kann ich nur Werbung für @ErfinderDesRades machen: Datenverarbeitungs-Vorraussetzungen


    Da es schon ein Programm gibt, muss er sich keine YouTube Videos rein ziehen.

    Hierfür würde sich klassisch ein MS SQL Server anbieten. Wenn Access für die Datenmengen gereicht hat, dann reicht auch die Express Edition vom SQL Server.

    Du musst halt schauen wann, wo und wie auf die Daten aus der Access DB zugegriffen wird. Sowohl lesend wie schreibend.
    Die Art und Weise wie das gemacht wird bestimmt die Änderungen am Code um auf einen MS SQL Server zu zugreifen.


    Die Express Edition ist ja bei meinem VB Express 2013 dabei ... leider check is das ned so ganz ... und die google suche bringt ca 1 milliarde ergebnisse wobei mir keines so richtig nützlich erscheint.

    soweit das ich eine .mdf datei erzeugt habe mit tabellen und rows und daten eingefügt habe hatte ich ja schon. nur die war local im projektordner und sobald ich sie ins Netzlaufwerk kopiert habe und mich auch am connectionstring versucht habe ging nichts mehr.
    Hast du vl ein tutorial wie ich das anstellen muss?

    besten dank für eure hilfe!

    Lg

    republicx schrieb:

    Brauch ich einen DB Server?
    So wie es aussieht , nicht zwingend.
    Wenn du aber irgendwo eh schon einen im Netzwerk stehen hast, kannst du dich ja dort draufklinken.

    Wenn du keinen hast, müsstest du dir irgendwo einen Rechner aussuchen, der immer verfügbar ist und dort eine serverorientierte DB installieren (MySQL, MS-SQL).
    In dem Fall wirst du dich wahrscheinlich mit einer dateibasierten Lösung leichter tun.
    Und wenn MS-SQL-Express keine Netzwerkordner zulässt, wirst du wohl SQLite nehmen müssen.

    Oder du verwendest gar keine DB und nimmst die Dataset-Only-Lösung.
    Hast du dir die oben verlinkten Tutorials angeschaut?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    wie ichs verstehe, liegt eine Multi-User-Nutzung vor. Ob DatasetOnly da anwendbar ist müsste man untersuchen. Man müsste dafür zB was basteln, dass der Schreiber-Prozess die Dataset-Datei für Lesezugriffe sperren kann, und dass die Leser bei einer gesperrten Datei nicht abstürzen, sondern bisserl später nochmal versuchen (Try-catch-retry).

    Was ich nicht nachvollziehen kann ist, warum die mdb immer wieder kaputt geht.
    AFAIK ist Access mutlituser-fähig - wenn das also instabil ist, liegts am Code oder an sonstigen System-Parametern.
    Bei Multi user, bzw. Zugriffen von verschiedenen Stellen, installiert man auf einem Server im Netzwerk einen MS SQL Server (Express) oder nutzt einen vorhandenen.

    Dort wird eine Datenbank erzeugt und der Inhalt der Access MDB in diese Kopiert.

    Bleibt die Frage, wie greift dein Programm auf die MDB zu?
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    republicx schrieb:

    Muss mir das mit dem SQL Express anschaun wie das genau funktioniert
    Und wenn du dann feststellst, dass dir die Infrastruktur dafür zu aufwendig wird oder die Handhabung im Netzwerk zu unflexibel ist, lies Post #4 nochmals durch.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --