SQL-Netzwerkschnittstellen, Fehler: 50 - Fehler bei der Laufzeit der lokalen Datenbank aufgetreten. Es kann keine automatische Instanz erstellt werden

80

Ich versuche, eine ASP.NET MVC 5-Webanwendung zu erstellen, die eine MyDatabase.mdfDatei im App_DataOrdner enthält. Ich habe SQL Server 2014 Express mit einer LocalDbInstanz 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 Applicationnachgesehen 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 Modelsich 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 ControllerSetup, 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.configDatei 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?

Jonathan Kittell
quelle
Hast du es versucht (localdb)\v11.0?
Arindam Nayak
Nur mit dem (localdb)\v11.0gleichen Ergebnis wie oben versucht .
Jonathan Kittell
Sind Sie sicher, dass der SQL Server (SQLEXPRESS)Dienst ausgeführt wird ?
Arindam Nayak
Ja, die SQLEXPRESS-Instanz wird ausgeführt, wenn ich mit SQL Server Configuration Manager
Jonathan Kittell
Können Sie eine Verbindung mit Management Studio herstellen, gibt es einen Artikel - dyball.wordpress.com/2014/04/28/… , dies könnte helfen ~
Arindam Nayak

Antworten:

124

Brechen von Änderungen an LocalDB: Gilt für SQL 2014 ; Schauen Sie sich diesen Artikel an und versuchen Sie, ihn (localdb)\mssqllocaldbals 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 mssqllocaldbWert anstelle von zu verwenden v12.0und zu prüfen, ob das behebt dein Problem.

Bret
quelle
jede andere Lösung bitte, weil es für mich nicht funktioniert
Ahmad
39

Führen Sie dies aus:

sqllocaldb create "v12.0"

Von cmd prompt hat sich das für mich gelöst ...

Alex
quelle
2
was macht das eigentlich
Simon_Weaver
1
Erstellt eine lokale SQL-Datenbank mit dem Namen "v12.0".
Falcon Momot
4
4 Stunden meines Lebens, um dieses Problem zu beheben, und dieser Befehl löst es in einer Sekunde. Es wird eine neue LocalDB-Instanz mit einem angegebenen Namen und einer angegebenen Version erstellt. Wenn der Parameter [Versionsnummer] weggelassen wird, wird standardmäßig die Build-Version SqlLocalDB verwendet. -s startet die neue LocalDB-Instanz nach ihrer Erstellung. Weitere Informationen hier: msdn.microsoft.com/en-us/library/hh247716.aspx
Exel Gamboa
Zu Ihrer Information, nachdem ich diese cmd-Anweisung ausgeführt habe, habe ich die connectionString Data Source = (LocalDb) \ V12.0 meiner Web.config-Datei bearbeitet. from Data Source = (LocalDb) \ MSSQLLocalDB;
David Alan Condit
36

Normalerweise behebe ich diesen Fehler nach diesem msdn-Blog-Beitrag Verwenden von LocalDB mit vollständigem IIS

Dazu muss die Datei applicationHost.config bearbeitet werden, die sich normalerweise in C: \ Windows \ System32 \ inetsrv \ config befindet. Befolgen Sie die Anweisungen aus KB 2547655, und aktivieren Sie beide Flags für den Anwendungspool ASP.NET v4.0 wie folgt:

<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0"     managedPipelineMode="Integrated">
    <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</add>
Matteo
quelle
17
Beachten Sie, dass Sie zum Bearbeiten dieser Datei einen 64-Bit-Texteditor wie den Editor verwenden müssen. Wenn Sie eine 32-Bit-Datei wie Notepad ++ verwenden, wird stattdessen automatisch eine andere Kopie der Datei in SysWOW64 bearbeitet. Stunden meines Lebens werde ich nicht zurückkommen.
Tyler
1
@ Tyler Ich kann dir nicht genug dafür danken, dass du darauf hingewiesen hast. Ich wünschte, ich hätte Ihren Kommentar etwas früher gelesen. Verbrachte 3 Tage damit, alles zu verändern. DAS HAT DER TRICK GEMACHT!
Pirat X
1
OH MEIN GOTT! Danke Tyler. Ich hatte mit der gleichen Sache zu kämpfen und du hast mich davor bewahrt, weitere 2 Stunden zu verschwenden!
130nk3r5
1
Verweisen Sie auf diese blogs.msdn.microsoft.com/sqlexpress/2011/12/08/…
David
Wo in der Datei geht das hin?
Ciaran Gallagher
24

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 umbenennen

Possible Issues
 \\ rename the conn string from v12.0 to MSSQLLocalDB -like so-> 
 `<connectionStrings>
      <add name="ProductsContext" connectionString="Data Source= (localdb)\mssqllocaldb; 
      ...`

Ich 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 kann

 1. `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"`

SqlLOCALDb_edited.png


ADVANCED Fehlerbehebung RegistryKonfigurationen

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

Fehlerbehebung NetworkKonfigurationen

SELECT registry_key, value_name, value_data  
FROM sys.dm_server_registry  
WHERE registry_key LIKE N'%SuperSocketNetLib%';  
Transformator
quelle
1
Entfernen und Hinzufügen der Datenbank, für die gearbeitet wurde. Mit VS Community 2017 und dem MVA-Kurs auf MVC
Jeroen
Welchen Registrierungsschlüssel suchen Sie?
Adam Plocher
@AdamPlocher im reg Bild oben können Sie sehen, dass corresponding software SQL server versionsdies 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, dieses
Transformator
@ Jeroen froh, dass ich helfen konnte :)
Transformator
@transformer Weder der Screenshot noch Ihre Antwort zeigen, welchen Pfad Sie in der Registrierung überprüfen müssen. Der Screenshot zeigt einen Microsoft SQL Server-Schlüssel in der Registrierung, jedoch nicht die übergeordneten Schlüssel. Ihre Antwort lautet "Überprüfen Sie zuerst, welche Instanz Sie installiert haben, Sie können dies tun, indem Sie die Registrierung überprüfen", sagt jedoch nicht, wo in der Registrierung überprüft werden soll. Um welchen Registrierungspfad handelt es sich? Thx
Adam Plocher
13

Eine 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.
Musab
quelle
Dieser Rat scheint den von @transformer zu geben?
Caius Jard
8

Vielleicht kam dieser Fehler, weil dies versionvon 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.0zuMSSQLLocalDB

Basheer AL-MOMANI
quelle
Es schafft ein Problem in meinem Fall, wenn ich MssqllocalDb benutze, aber es zeigt einen Fehler: /
Ahmad
4

Die endgültige Lösung für dieses Problem finden Sie unten:

  1. Nehmen Sie zuerst Änderungen in der Konfigurationsdatei applicationHost vor. Ersetzen Sie die folgende Zeichenfolge. setProfileEnvironment = "false" TO setProfileEnvironment = "true"

  2. Fügen Sie in Ihrer Datenbankverbindungszeichenfolge das folgende Attribut hinzu: Integrierte Sicherheit = SSPI

Dalip Choudhary
quelle
Pfad zu ApplicationHost: C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config. Dieser Beitrag machte mir klar: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Mamdouh
3

Ich bin auf das gleiche Problem gestoßen. Mein fix wechselte <parameter value="v12.0" /> auf <parameter value="mssqllocaldb" /> in die „app.config“ -Datei.

Kos
quelle
3

Alle BITTE beachten Sie, was Tyler gesagt hat

Beachten Sie, dass Sie zum Bearbeiten dieser Datei einen 64-Bit-Texteditor wie den Editor verwenden müssen. Wenn Sie eine 32-Bit-Datei wie Notepad ++ verwenden, wird stattdessen automatisch eine andere Kopie der Datei in SysWOW64 bearbeitet. Stunden meines Lebens werde ich nicht zurückkommen

130nk3r5
quelle
2

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.

Michael Staples
quelle
2

Ich habe das obige Problem gelöst

Geben Sie hier die Bildbeschreibung ein

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" />
Sagar Shinde
quelle
Überprüfen Sie auch Ihre Verbindungszeichenfolge
Sagar Shinde
0

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.

Nenad Birešev
quelle