Benutzer mit den meisten Antworten
Veröffentlichen mit Datenbank

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
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.
- Als Antwort markiert Joachim Hiller Montag, 20. August 2012 14:22
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.
-
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 -
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
-
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.
- Als Antwort markiert Joachim Hiller Montag, 20. August 2012 14:22