none
Veröffentlichen mit Datenbank RRS feed

  • Frage

  • Servus  zusammen,

    leider habe ich wieder ein Problem und bräuchte wieder Eure Hilfe. Diesmal möchte ich mein Projekt veröffentlichen, soweit ist das auch kein Problem, das Problem liegt bei der Datenbank-Datei. Ich habe mehrere Sachen probiert und das Programm ohne Datenbank funktioniert auch wunderbar.

    Die Verbindung mit der DB habe ich über LINQ  realisiert.

    Ich habe die DB in mein Projekt eingebunden und auch beim veröffentlichen  in die Anwendungsdateien eingeschlossen. Auch habe ich die DB-Eigenschaften eingestellt:

    Buildvorgang auf "Inhalt"

    In Ausgabeverzeichnis kopieren auf  "Kopieren wenn neuer"

     

    Mein connectionString sieht folgendermaßen aus:

     <add name="Buchhaltung.My.MySettings.Buchhaltung_DatenConnectionString1"
    
    connectionString="DataSource=.;AttachDbFilename=|DataDirectory|\Buchhaltung_Daten.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
                providerName="System.Data.SqlClient" />

    Auch habe ich den Versuch gemacht das ich die Daten von dem Release-Ordner zu kopieren. Hier ist
    es auch so, das auf dem PC auf dem ich dieses Programm geschrieben habe läuft
    auch das wunderbar, wenn ich es auf einem anderen PC kopiere findet er wieder nicht
    die Datenbank. Es kommt immer dieser Fehler

    Leider fällt mir gerade nichts mehr ein was ich noch versuchen könnte, eventuell hat vielleicht von euch jemand eine Idee für mich.

    Ich wäre Euch wie immer sehr dankbar für Hilfe

    Grüßle Jo

    Montag, 20. August 2012 09:33

Antworten

  • Hallo Joachim,

    mit DataSource=. verbindet man sich mit der lokalen Standard Instanz. Zudem verwendest Du eine Benutzerinstanz, was der verwendete SQL Server auch unterstützen muss.

    Wenn auf den anderen Rechner kein SQL Server oder ein SQL Server als benannte Instanz (wie .\SQLEXPRESS) läuft, dann schlägt der Verbindungsaufbau fehl.


    Olaf Helper
    Blog Xing

    Montag, 20. August 2012 10:40

Alle Antworten

  • Hallo Joachim,

    eigentlich müsste es eine richtige SqlException geben, wenn der SQL Server nicht gefunden wird. Fängst Du ab und behandelst den nicht weiter, den oben in der Meldung geht es "nur" um eine InvalidArgument Exception.

    Läuft den auf dem Zielrechner ebenfalls der SQL Server Express? Denn über den ConnectionString mit DataSource=.  (müsste eigentlich eher =.\SQLEXPRESS sein) wird immer auf einen lokal laufenden SQL Server zugegriffen.


    Olaf Helper
    Blog Xing

    Montag, 20. August 2012 09:46
  • Hi,

    zuerst einmal muss auf dem Zielrechner auch ein SQL Server (ggfs. Express) mit der passenden Version installiert sein. Dazu kommt, dass man Benutzerinstanzen IMHO nicht verwenden sollte (in den meisten Fällen kann man das auch gar nicht, bei dir könnte es ggfs. zwar klappen, sinnvoll ist es aber IMHO nicht).

    Prüf also bitte mal, ob auf dem Zielrechner ein SQL Server installiert ist. Falls ja, häng die Datenbankdateien mal testweise direkt über das SQL Server Management Studio an und ändere den ConnectionString wie folgt:

    <add name="..." connectionString="SERVER=127.0.0.1\SQLEXPRESS;Database=<Datenbankname>;UID=<SqlBenutzer>;PWD=<SqlBenutzerPasswort>" ... />

    \SQLEXPRESS brauchst Du nur anzugeben, wenn eine benannte Instanz installiert wurde, bei SQL Server Express ist das in der Regel eben "SQLEXPRESS".

    In meinem Beispiel wird das TCP/IP Protokoll verwendet. Falls das bei dir nicht aktiviert ist, mach das mal.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 20. August 2012 10:09
    Moderator
  • Hallo Olaf,

    danke für deine schnelle Antwort. Meinst du das ich die Datei bei dem Zielrechner auf den SQLEXPRESS-Server laden soll ??

    Auf dem Testrechner ist kein SQLExress installiert, auf einem anderen ist es installiert und da bekomme ich die gleiche Fehlermeldung

    Grüßle Jo

    Montag, 20. August 2012 10:17
  • Hallo Stefan,

    vielen dank für die Antwort ich installieren SQLexpress  und teste mal die Variante.

    Grüßle Jo

    Montag, 20. August 2012 10:31
  • Hallo Joachim,

    mit DataSource=. verbindet man sich mit der lokalen Standard Instanz. Zudem verwendest Du eine Benutzerinstanz, was der verwendete SQL Server auch unterstützen muss.

    Wenn auf den anderen Rechner kein SQL Server oder ein SQL Server als benannte Instanz (wie .\SQLEXPRESS) läuft, dann schlägt der Verbindungsaufbau fehl.


    Olaf Helper
    Blog Xing

    Montag, 20. August 2012 10:40
  • Hallo Olaf,

    ohje das ist eigentlich logisch. Danke dafür. Wenn ich einen Datenbank-Datei habe muss ich die "immer" auf dem server ablegen ?

    Grüßle Jo

    Montag, 20. August 2012 10:50
  • Das hängt ja erst mal davon ab, wie es geplant ist; sollen alle mit dem gleichen Datenbestand = 1 Datenbank auf einem Server arbeiten, oder soll jeder Client seinen eigenen, unabhängigen Datenbestand haben.

    Olaf Helper
    Blog Xing

    Montag, 20. August 2012 11:05
  • Eigentlich soll das Programm nur auf einen Rechner laufen und dort eben für einen Benutzer, deswegen hatte ich gedacht das mit einer Datenbank-Datei wäre so der einfachste Weg.

    Grüßle Jo

    Montag, 20. August 2012 11:11
  • Dann musst Du dort den SQL Server (Express) installieren und ggf. die Config Datei anpassen, als ein (anderer) Instanzenname bei der Installation verwendet wurde.

    Olaf Helper
    Blog Xing

    Montag, 20. August 2012 11:17
  • Ah ok,

    vielen dank das werde ich mal probieren

    Grüßle Jo

    Montag, 20. August 2012 11:18
  • Hallo Olaf,

    vielen Dank nochmals für deine Hilfe. Jetzt klappt alles wunderbar. Ich hab den SqlExpress-Server installiert und dann habe ich noch den Pfad angepasst.

    Vielen Dank

    Grüßle Jo

    Montag, 20. August 2012 14:25