2017-05-05 4 views
0

Ich entwickelte eine Win-Form-basierte Anwendung, die Datenbank beteiligt. Ich habe die Datenbank im Visual Studio innerhalb dieser Lösung erstellt. Meine aktuelle Verbindungszeichenfolge in app.config-Datei ist:Erstellen Sie eine universelle Verbindungszeichenfolge

connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\NARA.mdf;Integrated Security=True;" providerName="System.Data.SqlClient"/> 

Aber es prüft ich meine Debug-Ordner kopiert, die alle Dateien enthielten (einschließlich Datenbank), aber es gab Connection String Ausnahme auf meinem anderen System. Wie kann ich eine Verbindungszeichenfolge erstellen, die auf jedem System funktionieren kann, an das ich mein Programm anschließe?

+0

Was ist die Fehlermeldung? – Steve

+0

@Steve Es ist ziemlich lang, aber ich werde versuchen, einen wichtigen Teil zu setzen. Beim Herstellen einer Verbindung zu SQL Server trat ein netzwerkbezogener oder instanzspezifischer Fehler auf. Der Server wurde nicht gefunden oder ist nicht verfügbar. Überprüfen Sie, ob der Name der Instanz korrekt ist und ob SQL Server so konfiguriert ist, dass Remote-Verbindungen zugelassen werden (Provider: SQL Network Interfaces, Fehler 50- Localc Database Runtime-Fehler. Die angegebene LocalDB-Instanz existiert nicht. – Bilal

+0

) Haben Sie die Bits für LocalDB installiert? auf der fehlerhaften Maschine? – Steve

Antwort

1

Alle Ihre Probleme werden durch Inkompatibilität zwischen Sql Server-Versionen verursacht.
Wenn Sie die 2012 LocalDB installieren, verfügt sie über eine Standardinstanz namens v11.0. Also, wenn Sie wollen auf diese Standardinstanz verbinden und lassen Sie es Ihre MDF-Datei verwalten müssen Sie eine Verbindungszeichenfolge mit

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=....."/> 

oder Sie können eine Instanz mit dem Namen durch die Verbindung mit einer administrativen Eingabeaufforderung erforderlich erstellen und Eingabe

SqlLocalDb c MSSqlLocalDB 

Aber das ist nicht das Ende der Probleme, denn jetzt müssen Sie mit SQL Server 2012-Version (localdb oder nicht) erstellt eine MDF-Datei haben. Und, wie klar aus der Fehlermeldung erhalten, haben Sie eine MDF-Datei mit Sql Server 2016 erstellt.

Die 2012 kann nicht mit 2016 erstellt Datei lesen. Dies war immer der Fall mit Sql Server (und logisch so), weil neu Versionen der MDF-Datei enthalten immer Verbesserungen oder interne Änderungen, die diese Inkompatibilität verursachen.

Die Lösung ist einfach: Installieren Sie eine Version Ihrer LocalDB-Bits, die mit der MDF-Datei kompatibel sind, die Sie verteilen. (Denken Sie daran, dass LocalDB eine Entwicklungseinrichtung ist und nicht in der Produktion verwendet werden sollte, auch wenn es in einem einfachen Szenario funktioniert. Ich nutze es zum Beispiel, um eine Demo meiner vollständigen Anwendung zu verteilen. So kann ein Kunde mit einer schlechten IT-Abteilung die Daten auswerten Produkt ohne gezwungen zu werden, den Sql Server Express zu installieren o die Vollversion)

Verwandte Themen