Ich versuche, eine ASP.NET MVC 5-Webanwendung zu erstellen, die eine MyDatabase.mdf
Datei im App_Data
Ordner enthält. Ich habe SQL Server 2014 Express mit einer LocalDb
Instanz installiert . Ich kann die Datenbanktabellen mit dem Server-Explorer bearbeiten. Wenn ich jedoch die Anwendung debugge und zu einer Seite gehe, auf der die Datenbank benötigt wird, wird der folgende Fehler angezeigt.
Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht zugänglich. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass Remoteverbindungen zugelassen werden. (Anbieter: SQL Network Interfaces, Fehler: 50 - Fehler bei der Laufzeit der lokalen Datenbank aufgetreten. Es kann keine automatische Instanz erstellt werden. Weitere Informationen zu Fehlern finden Sie im Ereignisprotokoll der Windows-Anwendung.
Also habe ich in der Ereignisanzeige unter Application
nachgesehen und immer wieder nur eine Warnung gesehen.
Das für das Zwischenspeichern komprimierter Inhalte angegebene Verzeichnis C: \ Benutzer \ Benutzer1 \ AppData \ Local \ Temp \ iisexpress \ IIS Temporäre komprimierte Dateien \ Clr4IntegratedAppPool ist ungültig. Die statische Komprimierung wird deaktiviert.
Also habe ich versucht, den Server neu zu starten, immer noch nicht los. Gleicher Fehler 50 wie zuvor.
Ich habe eine Klasse erstellt, unter der Models
ich eine Klasse namens habe Post
.
namespace MyApplication.Models
{
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
public class MyDatabase : DbContext
{
public DbSet<Post> Posts { get; set; }
}
}
Ich habe auch ein Controller
Setup, um die Beiträge von aufzulisten MyDatabase
.
namespace MyApplication.Controllers
{
public class PostsController : Controller
{
private MyDatabase db = new MyDatabase();
// GET: Posts
public ActionResult Index()
{
return View(db.Posts.ToList());
}
}
In meiner web.config
Datei sieht die Verbindungszeichenfolge so aus ...
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Ich habe den hier veröffentlichten Vorschlag ausprobiert , aber er hat nicht funktioniert. Auch versucht diese .
Ich stelle außerdem fest, dass die MyDatabase-Instanz getrennt wird, nachdem ich die Anwendung gestartet habe. Wenn ich die Datenbank mit dem Server Explorer in Visual Studio aktualisiere, kann ich die Tabellen anzeigen.
Wie kann ich eine Verbindung zur Datenbank herstellen und diese in Visual Studio 2013 bearbeiten, aber beim Debuggen der Anwendung kann keine Verbindung zur Datenbank hergestellt werden?
quelle
(localdb)\v11.0
?(localdb)\v11.0
gleichen Ergebnis wie oben versucht .SQL Server (SQLEXPRESS)
Dienst ausgeführt wird ?Antworten:
Brechen von Änderungen an LocalDB: Gilt für SQL 2014 ; Schauen Sie sich diesen Artikel an und versuchen Sie, ihn
(localdb)\mssqllocaldb
als Servernamen zu verwenden, um eine Verbindung zur automatischen LocalDB-Instanz herzustellen. Beispiel:<connectionStrings> <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; ...
In dem Artikel wird auch die Verwendung von 2012 SSMS für die Verbindung mit der 2014 LocalDB erwähnt. Dies lässt mich glauben, dass möglicherweise mehrere SQL-Versionen installiert sind. Dies führt mich dazu, auf diese SO-Antwort hinzuweisen, die vorschlägt, den Standardnamen Ihrer LocalDB- "Instanz" zu ändern, um zu vermeiden, dass in Zukunft andere Probleme mit der Versionsinkongruenz auftreten. Nicht als Problemquelle erwähnt, sondern um das Bewusstsein für mögliche Konflikte zu schärfen, zu denen mehrere auf einem einzelnen Entwicklungscomputer installierte SQL-Versionen führen könnten ... und etwas, an das man sich gewöhnen muss, um einige zu vermeiden.
Eine weitere erwähnenswerte Sache: Wenn Sie Ihre Instanz in einen unbrauchbaren Zustand versetzt haben, weil Sie daran herumgebastelt haben, um dieses Problem zu beheben, ist es möglicherweise sinnvoll, von vorne zu beginnen - deinstallieren, neu installieren - und dann den
mssqllocaldb
Wert anstelle von zu verwendenv12.0
und zu prüfen, ob das behebt dein Problem.quelle
Führen Sie dies aus:
Von cmd prompt hat sich das für mich gelöst ...
quelle
Normalerweise behebe ich diesen Fehler nach diesem msdn-Blog-Beitrag Verwenden von LocalDB mit vollständigem IIS
<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated"> <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" /> </add>
quelle
Zu Beginn gibt es 4 Probleme, die die häufigsten Verbindungsfehler mit LocalDb SqlExpress Sql Server verursachen
SQL Network Interfaces, error: 50 - Local Database Runtime error occurred
können. Bevor Sie beginnen, müssen Sie v11 oder v12 in (localdb) \ mssqllocaldb umbenennenIch fand, dass es am einfachsten ist, das Folgende zu tun - ich habe die Bilder und Schritte zur Hilfe angehängt.
First verify which instance you have installed
, Sie dies tun , indem Sie die Registrierung überprüft und durch Ausführen cmd kann1. `cmd> Sqllocaldb.exe i` 2. `cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"` if this step fails, you can delete with option `d` cmd> Sqllocaldb.exe d "someDb" 3. `cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"` 4. `cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"`
Bearbeiten Sie 1 aus Anfragen und Kommentaren: Hier ist der Registrierungspfad für alle Versionen in einem generischen Format, um die Registrierung aufzuspüren
Wege
// SQL SERVER RECENT VERSIONS HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\(instance-name) // OLD SQL SERVER HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer // SQL SERVER 6.0 and above. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive // SQL SERVER 7.0 and above HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server 7 HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServ65
Suchen
SELECT registry_key, value_name, value_data FROM sys.dm_server_registry WHERE registry_key LIKE N'%SQLAgent%';
oder Führen Sie dies in SSMS SQL Management Studio aus. Es wird eine vollständige Liste aller Installationen angezeigt, die Sie auf dem Server haben
DECLARE @SQL VARCHAR(MAX) SET @SQL = 'DECLARE @returnValue NVARCHAR(100)' SELECT @SQL = @SQL + CHAR(13) + 'EXEC master.dbo.xp_regread @rootkey = N''HKEY_LOCAL_MACHINE'', @key = N''SOFTWARE\Microsoft\Microsoft SQL Server\' + RegPath + '\MSSQLServer'', @value_name = N''DefaultData'', @value = @returnValue OUTPUT; UPDATE #tempInstanceNames SET DefaultDataPath = @returnValue WHERE RegPath = ''' + RegPath + '''' + CHAR(13) FROM #tempInstanceNames -- now, with these results, you can search the reg for the values inside reg EXEC (@SQL) SELECT InstanceName, RegPath, DefaultDataPath FROM #tempInstanceNames
SELECT registry_key, value_name, value_data FROM sys.dm_server_registry WHERE registry_key LIKE N'%SuperSocketNetLib%';
quelle
corresponding software SQL server versions
dies in einigen Fällen verwaist sein kann. Wenn Sie die Installation wiederholen möchten, überprüfen Sie am besten, ob diese Schlüssel entfernt und neu installiert wurden. Wenn Sie nicht danach suchen, helfen Sie mir, Ihre Frage besser zu verstehen, und ich werde versuchen, Ihnen zu helfen. Ich habe viel Zeit damit verbracht, diesesEine Instanz ist möglicherweise beschädigt oder wird nicht ordnungsgemäß aktualisiert.
Probieren Sie diese Befehle aus:
C:\>sqllocaldb stop MSSQLLocalDB LocalDB instance "MSSQLLocalDB" stopped. C:\>sqllocaldb delete MSSQLLocalDB LocalDB instance "MSSQLLocalDB" deleted. C:\>sqllocaldb create MSSQLLocalDB LocalDB instance "MSSQLLocalDB" created with version 13.0.1601.5. C:\>sqllocaldb start MSSQLLocalDB LocalDB instance "MSSQLLocalDB" started.
quelle
Vielleicht kam dieser Fehler, weil dies
version
von SQL Serveris not installed
connectionString="Data Source=(LocalDB)\v12.0;....
und Sie müssen es nicht installieren
Die schnellste Lösung besteht darin, sie auf eine installierte Version zu ändern
in meinem Fall ändere ich es von
v12.0
zuMSSQLLocalDB
quelle
Die endgültige Lösung für dieses Problem finden Sie unten:
Nehmen Sie zuerst Änderungen in der Konfigurationsdatei applicationHost vor. Ersetzen Sie die folgende Zeichenfolge. setProfileEnvironment = "false" TO setProfileEnvironment = "true"
Fügen Sie in Ihrer Datenbankverbindungszeichenfolge das folgende Attribut hinzu: Integrierte Sicherheit = SSPI
quelle
Ich bin auf das gleiche Problem gestoßen. Mein fix wechselte
<parameter value="v12.0" />
auf<parameter value="mssqllocaldb" />
in die „app.config“ -Datei.quelle
Alle BITTE beachten Sie, was Tyler gesagt hat
quelle
In meinem Fall hatten wir mehrere Projekte in einer Lösung und hatten ein anderes Startprojekt als in der Paketmanagerkonsole ausgewählt, als der Befehl "Update-Database" mit Code-First-Migrationen ausgeführt wurde. Stellen Sie sicher, dass Sie das richtige Startprojekt auswählen.
quelle
Ich habe das obige Problem gelöst
Und nachdem Sie diese Änderungen vorgenommen haben, nehmen Sie die folgenden Änderungen in Ihrer web.config vor
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v12.0;AttachDbFilename=|DataDirectory|\aspnet-Real-Time-Commenting-20170927122714.mdf;Initial Catalog=aspnet-Real-Time-Commenting-20170927122714;Integrated Security=true" providerName="System.Data.SqlClient" />
quelle
Mein Problem war, dass ich mehrere Versionen von MS SQL Express installiert hatte. Ich ging zum Installationsordner C: / ProgramFiles / MicrosoftSQL Server /, wo ich 3 Versionen davon fand. Ich habe 2 Ordner gelöscht und nur MSSQL13.SQLEXPRESS belassen, wodurch das Problem behoben wurde.
quelle