Announcement

Collapse
No announcement yet.

Veraltete Daten in SQLExpress-DB bei Neuinstallation

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Veraltete Daten in SQLExpress-DB bei Neuinstallation

    Hallo zusammen,

    ich hab folgendes Problem:

    Meine Anwendung benutzt eine mdf, auf die ich mit folgendem Connection-String verbinde:

    Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Data\DBJVS.mdf;Initial Catalog=DBJVS;Integrated Security=True;User Instance=True

    (der Abstand in DataDirectory existiert natürlich nicht, wird nur hier so dargestellt)

    Die Verteilung der Anwendung erfolgt durch ein Setup-Projekt, bei dem ich die Datenbank ohne Daten mit ausliefere.

    Bei der ersten Installation klappt alles wunderbar. Deinstallier ich die Anwendung jedoch (mdf wird mit gelöscht) und installier sie neu (egal ob mit neuem oder gleichen Alias im Connection-String), so verwendet die Anwendung dennoch Daten, die ich beim Testen der ersten Installation gespeichert hab, obwohl die neu ausgelieferte und angehängte DB leer ist.

    D.h. SQLExpress verwendet irgendwie immer noch eine Instanz der ersten DB.

    Kann mir irgendjemand sagen, was ich falsch mach?

    (Falls noch mehr Angaben zur Anwendung benötigt werden, einfach melden)

    Gruß Jörg

  • #2
    Hallo Jörg,

    (mdf wird mit gelöscht)
    Sicher?
    Wenn die Applikation gestartet wird, ändern sich die DB-Dateien. Installer belassen geänderte "Dokumente" (ein solches stellen die Dateien dar, es sind nicht direkt Binaries wie EXE/DLL) da, wo sie abgelegt wurden und entfernen sie nicht bei der Deinstallation.
    Insbesondere bei DB seine sinnige Vorgehensweise.
    Wenn dann eine Neuinstallation erfolgt, erkennt der Installer, das sie bereits vorhanden ist.
    Das es keine Binary ist, kann keine Versions-Prüfung erfolgen und die Datei wird nicht überschrieben.

    Wie man hier
    http://technet.microsoft.com/en-us/l...expuser_topic4
    http://msdn.microsoft.com/de-de/library/ms254504.aspx
    nachlesen kann, werden zwar bei USER INSTANCE ins User-Profil System-Datenbanken angelegt.
    Die User-Datenbanken werden aber nicht kopiert, die werden aus dem angegebenen Verzeichnis genutzt; allein deshalb kann man sie nur exklusiv nutzen.

    P.S.: Wenn ich eine MSSQL 2000/2005 Instanz deinstalliere, bleiben alle DB-Dateien vorhanden; wie gesagt, das ist sinnig.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      100% sicher bin ich mir nicht, die mdf liegt im Ordner der .Net-Anwendung. Bei der Deinstallation wird dieser Ordner gelöscht, die mdf ist also zumindest nicht mehr sichtbar und auch durch ne Explorer-Suche nicht auffindbar. Bei der Neuinstallation sollte in der Theorie also eine neue leere mdf unter dem gleichen Pfad abgelegt werden.

      Wenn ich dich richtig verstehe, meinst du also, dass bei der Neuinstallation nicht die neue mdf abgelegt wird, sondern die alte wiederhergestellt wird?

      Gruß Jörg

      Comment


      • #4
        sondern die alte wiederhergestellt wird?
        Nein, das eine Datei wiederhergestellt wird, ist sehr unwahrscheinlich.

        Du solltest wirklich mal prüfen, ob die MDF wirklich gelöscht wird, also
        - Installation
        - Programm starten & Daten ändern (damit sich die MDF ändert)
        - Deinstallation

        Wenn wie ich vermute, das die geänderte MDF nicht gelöscht wird, dürfte auch das ganze Verzeichnis nicht gelöscht werden, da es ja nicht leer ist.

        Falls doch alles gelöscht wird, weiss ich auch nicht, woran es liegen kann.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          So hab das Problem gefunden.

          Verursacht wird dieses Problem durch Vista, da es die Lese- und Schreibrechte auf die mdf-Datei umleitet, und die mdf im VirtualStore-Ordner virtualisiert. Diese Umleitung bleibt bei der Deinstallation bestehen und wird bei einer Neuinstallation wieder verwendet.

          Die Lösung ist ein explizites Löschen der mdf + ldf im VirtualStore-Ordner in der Uninstall-Methode des Setup-Projektes.

          Auf jeden Fall danke für deine Hilfe, hat mich auf den richtigen Weg gebracht!

          Gruß Jörg

          Comment

          Working...
          X