wake-up-neo.net

Fehler beim Update-Datenbankbefehl bei der Code-Erstmigration

Ich arbeite an einer Desktopanwendung in WPF und erstelle SqlRepository mit LocalDB , um Daten zu speichern. Ich verwende folgende Werkzeuge

  • Visual Studio 2013 Community mit Update 2
  • Entity Framework 6.1.2 für die erste Migration von Code

Ich habe eine lokale Datenbank mit der Konfiguration der Microsoft SQL Server-Datenbankdatei (SqlClient) erstellt. Datenbank, die erfolgreich erstellt wurde und darunter, ist eine Verbindungszeichenfolge, die aus SQL abgerufen wird

Data Source=(LocalDB)\v11.0;Initial Catalog=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False

Ich verwende dieselbe Verbindungszeichenfolge in app.config. Ich kann Datenbankobjekte im SQL Server-Datenbank-Explorer in Visual Studio anzeigen. Wenn Sie jedoch den Befehl update-database in der Nuget-Paketmanagerkonsole ausführen, erhalte ich folgende Fehlermeldung:

Bei .__ trat ein netzwerkbedingter oder instanzspezifischer Fehler auf. Herstellen einer Verbindung zu SQL Server. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server ist so konfiguriert, dass Remoteverbindungen zugelassen werden. (Anbieter: SQL Netzwerkschnittstellen, Fehler: 26 - Fehler bei der Suche nach Server/Instanz Angegeben)

20
Nps

Ich hatte ein ähnliches Problem und habe dieses Problem behoben, als ich das "Startprojekt" von einem anderen Modul auf das Modul umstellte, das Verweise auf alle anderen Projekte in der Lösung enthielt. Klicken Sie mit der rechten Maustaste auf das Modul, und klicken Sie auf "Als Startprojekt festlegen".

59
user2747855

Die Antwort von Diego ist richtig.

Dieses Problem tritt auf, wenn in dem Projekt keine Verbindungszeichenfolge als Startprojekt markiert ist. Anschließend versucht EF, eine Verbindung zu einem Standard-Datenbankmodul herzustellen, um ein Update durchzuführen. In meinem Fall hat es versucht, Express zu verwenden, und aus irgendeinem Grund konnte keine Verbindung hergestellt werden. Und der Fehler wurde geworfen.

Führen Sie Ihre "Update-Datenbank" mit der Option "-Verbose" aus. Eine der Zeilen dort zeigt an, welches StartUp-Projekt verwendet wird. Überprüfen Sie Ihre Verbindungszeichenfolge in diesem Projekt, oder ändern Sie das Startprojekt in das Projekt mit der richtigen Verbindungszeichenfolge. Das löst das Problem.

7
Mikk

Wie in anderen Antworten erläutert, liegt das Problem normalerweise darin, dass das falsche Anfangsprojekt in Package Manager Console angezeigt wird .. In meinem Fall ignorierte die Konsole den Wert, den ich in der Dropdown-Liste Standardprojekt ausgewählt hatte, sowie den -StartUpProjectName-Parameter und Wiederholen des falschen Verhaltens beim Versuch, eine Verbindung zu einer Standard-Datenbank-Engine herzustellen, wie Mikks Antwort beschreibt, in meinem Fall unter Verwendung einer SqlExpress-Engine.

Mein Problem wurde durch eine falsche Lösungskonfiguration verursacht: Wenn Ihre Lösung mehrere Projekte hat und mit der Konfigurationsoption "Mehrere Startprojekte" ausgeführt werden soll, Sie sie jedoch gerade von Ihrem Quellcode-Kontroll-Repository heruntergeladen haben, ist es möglich, dass das Problem behoben wird Die Standardkonfigurationsoption "Ein Startprojekt" wird auf die Lösung angewendet (dieser Konfigurationswert wird in der Quellcodeverwaltung normalerweise nicht eingecheckt). In diesem Fall ignoriert die Package Manager Console einfach das in der Combo ausgewählte Startprojekt und wendet nur das Standard-Startprojekt in der Lösung an, das möglicherweise keine Verbindungszeichenfolge enthält, wie in der Antwort von Mikk angegeben.

Daher habe ich das Problem behoben, indem ich die Lösungseigenschaften geändert habe: Common properties/Startup project/Wählen Sie Multiple startup projects anstelle von Single startup project aus. Danach akzeptiert die Package Manager Console den Projektnamen und aktualisiert die richtige Datenbank.

3
Diana

Versuchen Sie es mit diesem Connectionstring:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Initial Catalog=testdb;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
2
octavioccl

Ich konnte dies lösen durch Hinzufügen von Parametern zum Befehl update-database :

update-database -StartupProjectName MyApp.Web -ConnectionStringName MyAppConnectStringInWebConfig
2
Steve Greene

Bei .__ trat ein netzwerkbedingter oder instanzspezifischer Fehler auf. Herstellen einer Verbindung zu SQL Server. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server ist so konfiguriert, dass Remoteverbindungen zugelassen werden. (Anbieter: SQL Netzwerkschnittstellen, Fehler: 26 - Fehler bei der Suche nach Server/Instanz Angegeben)

Diese Fehlermeldung weist Sie darauf hin, dass keine Verbindung zu SQL Server möglich ist. Die möglichen Gründe und ihre Beseitigung werden im Folgenden beschrieben:

1) SQL Server ist nicht gestartet. Wenn Sie es starten, können Sie Ihre SQL Server/Instanz in der Dropdown-Liste der verfügbaren SQL Server sehen.

  • Gehen Sie zum Startmenü -> Systemsteuerung -> Verwaltung -> Dienste. 
  • Suchen Sie in der Liste der Dienste nach SQL Server (Instanzname, durch Standardwert ist EZPARTS5) und überprüfen Sie den Status. Es muss gestartet werden
    (Wenn es nicht gestartet ist, klicken Sie mit der rechten Maustaste auf SQL Server und wählen Sie aus
    Start aus dem Kontextmenü).

2) Firewall blockiert Port 1433 (MSSQL-Standardport für Verbindungen). Es kann wie folgt deaktiviert werden: 

  • Gehen Sie zum Startmenü -> Systemsteuerung -> Verwaltung -> Dienste.
  • Suchen Sie den Firewall-Dienst. Er muss deaktiviert werden (wenn nicht, dann rechts. Klicken Sie auf den Dienst und wählen Sie im Kontextmenü die Option Beenden).

Hinweis: Weitere Informationen hierzu finden Sie auf der offiziellen Microsoft-Website: Link

3) Das TCP/IP-Protokoll ist für MSSQL-Protokolle deaktiviert. Um es zu aktivieren, gehen Sie wie folgt vor:

  • Navigieren Sie im Startmenü zu SQL Server Configuration Manager.
  • Legen Sie Einstellungen für das TCP/IP-Protokoll in SQL Server-Konfiguration Manager fest.
  • Starte den Computer neu.

Hinweis: Weitere Informationen hierzu finden Sie auf der offiziellen Microsoft-Website: Link

4) Stellen Sie sicher, dass Ihr Datenbankmodul für die Annahme von Remote-Verbindungen konfiguriert ist (wenn Sie eine zentralisierte Datenbank verwenden):

  • Öffnen Sie SQL Server Management Studio.
  • Klicken Sie mit der rechten Maustaste auf SQL Server-Instanz -> Eigenschaften -> Verbindungen -> Aktivieren Sie das Kontrollkästchen Remoteverbindungen zu diesem Server zulassen.
  • Wechseln Sie zum Abschnitt "General" und überprüfen Sie den Namen von SQL Server, der im Feld "Name" angegeben ist.

5) Wenn Sie eine benannte SQL Server-Instanz verwenden, stellen Sie sicher, dass Sie diesen Instanznamen in Ihren Verbindungszeichenfolgen verwenden. Normalerweise ist das Format, das zur Angabe des Datenbankservers erforderlich ist, Computername\Instanzname.

6) Stellen Sie sicher, dass Ihr Anmeldekonto über die Zugriffsberechtigung für die Datenbank verfügt, die Sie während der Anmeldung verwendet haben. Alternative:. Wenn Sie immer noch keine Verbindung herstellen können, möchten Sie möglicherweise ein SQL-Konto auf dem Server erstellen SQL-Benutzer in der betreffenden Datenbank, und verwenden Sie diese Anmeldedaten für Benutzername/Kennwort, um eine Verbindung zu SQL Server herzustellen.

Verwiesen von link

1

Wenn Sie versuchen, eine Verbindung zu SQL Server anstelle von Localdb herzustellen, stellen Sie sicher, dass die Standardverbindungsfactory in der Datei web.config wie folgt lautet:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.\SQLEXPRESS2012; Integrated Security=True; MultipleActiveResultSets=True" />
  </parameters>
 </defaultConnectionFactory>
1

Ich habe diesen Fehler behoben, als das ursprüngliche Projekt in das Entity-Projekt geändert wurde. 

Aussehen:

Update-Database -Verbose Startup-Projekt 'SCVE.Web' verwenden. <- dieser ir Fehler Verwendung des NuGet-Projekts 'SCVE.EntityFramework'.

1
Diego

Ich hatte das gleiche Problem mit einem frisch erstellten ASP.NET-Projekt.

Zuerst habe ich versucht, das Startprojekt wie oben erwähnt einzustellen. Es wurde kein Startprojekt ausgewählt und ich konnte kein Projekt auswählen.

Letztendlich habe ich mein Visual Studio von 2015 Update 1 bis 2015 Update 3 und aktualisiert

update-database

ohne Probleme ausgeführt.

0
drsbee