505 Stimmen

Kann keine Verbindung zum Server herstellen - Ein netzwerkbezogener oder instanzspezifischer Fehler

Ich erhalte den folgenden Fehler beim Versuch, eine Verbindung mit dem SQL Server herzustellen:

Beim Herstellen einer Verbindung mit dem SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass der SQL Server so konfiguriert ist, dass Remoteverbindungen zulässig sind. (Anbieter: Named Pipes Provider, Fehler: 40 - Verbindung mit dem SQL Server konnte nicht geöffnet werden)

Dieser Fehler tritt auf, wenn ich versuche, meine Datenbank in Visual Studio 2010 auf GridView zu konfigurieren. Ich bin ratlos, wie ich diesen Fehler debuggen soll.

Wie würden Sie diesen Fehler debuggen? Welche Schritte sollte ich unternehmen, um herauszufinden, was hier wirklich passiert, zusätzlich zu dem im Fehlermeldung erwähnten?

6voto

John Punkte 1248

Ich habe alle anderen Antworten auf diese Frage ausprobiert und einige, wenn nicht alle, haben wahrscheinlich dazu beigetragen, dass es bei mir funktioniert hat, aber ich konnte immer noch keine Verbindung zur Datenbank herstellen. Ich habe einen SQL Server auf einer Azure-VM verwendet.

Schließlich erinnerte ich mich daran, dass die VM Endpunkte hat, die vom Azure-Konto-Proxy gesteuert werden, also bin ich auf das Azure-Portal gegangen und habe den Port 1433 als verfügbaren Endpunkt hinzugefügt. Danach konnte ich mich mit meiner SQL-Instanz verbinden.

Ich hoffe, dies hilft jemandem, der alle anderen Antworten ausprobiert hat und immer noch kein Glück hat!

5voto

Westerlund.io Punkte 2593

Ich hatte das gleiche Problem und das Problem war, dass ich mehrere Projekte in der Lösung hatte (Web und Droid) und obwohl das Standardprojekt in der Package Manager Console ausgewählt war, wurde die Verbindungszeichenfolge aus dem Droid Projekt verwendet:

PM> update-database -Verbose
Using StartUp project 'Droid'. <-- DROID
Using NuGet project 'Web'. <-- WEB
Geben Sie das Flag '-Verbose' an, um die SQL-Anweisungen anzuzeigen, die auf die Ziel-Datenbank angewendet werden.

Zieldatenbank ist: 'DefaultConnection' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Herkunft: Konvention).
System.Data.SqlClient.SqlException (0x80131904): Bei der Herstellung einer Verbindung mit SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server konfiguriert ist, um Remoteverbindungen zuzulassen. (Anbieter: SQL Netzwerkschnittstellen, Fehler: 26 - Fehler beim Suchen des Servers/der angegebenen Instanz)
   [ENTFERNTER TEXT]
ClientConnectionId:00000000-0000-0000-0000-000000000000
Fehler-Nummer:-1, Status:0, Klasse:20
Bei der Herstellung einer Verbindung mit SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server konfiguriert ist, um Remoteverbindungen zuzulassen. (Anbieter: SQL Netzwerkschnittstellen, Fehler: 26 - Fehler beim Suchen des Servers/der angegebenen Instanz)

Nachdem ich das Startprojekt auf Web und das Standardprojekt in der Package Manager Console eingestellt hatte, funktionierte es.

5voto

Chamara Punkte 189

Sie können den Dienststatus von MS SQL Server 2014 überprüfen. In Windows 7 können Sie dies tun, indem Sie:

  1. Zur Suche gehen und "SQL Server 2014 Configuration Manager" eingeben
  2. Dann auf "SQL Server-Dienst" im linken Menü klicken
  3. Überprüfen Sie den Instanzstatus des SQL Server-Dienstes, ob er gestoppt oder ausgeführt ist
  4. Wenn er gestoppt ist, ändern Sie bitte den Status auf "ausgeführt" und melden Sie sich bei SQL Server Management Studio 2014 an

5voto

Devca Punkte 77

Starten Sie einfach den SQL Server (MSSQLSERVER) Dienst neu.

4voto

ShieldOfSalvation Punkte 1098

Als ich diesen Fehler in Visual Studio erlebte,

Ein netzwerkbezogener oder instanzspezifischer Fehler ist aufgetreten, während eine Verbindung mit dem SQL Server hergestellt wurde. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass der SQL Server so konfiguriert ist, dass Remoteverbindungen zugelassen sind. (Anbieter: Named Pipes Provider, Fehler: 40 - Verbindung mit SQL Server konnte nicht geöffnet werden)

... geschah dies während der Ausführung des folgenden C#-Codes, der versuchte, meine SQL Server-Daten abzurufen, um sie in einem Raster anzuzeigen. Der Fehler trat genau auf der Zeile auf, die sagt connect.Open():

        using (var connect = Connections.mySqlConnection)
        {
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            {
                connect.Open();
                using (var dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        // blah
                    }
                }
            }
        }

Es war unerklärlich, denn die SQL-Abfrage war sehr einfach, ich hatte den richtigen Verbindungszeichenfolge und der Datenbankserver war verfügbar. Ich beschloss, die tatsächliche SQL-Abfrage manuell in SQL Management Studio auszuführen, und sie funktionierte einwandfrei und lieferte mehrere Datensätze. Aber in den Abfrageergebnissen fiel mir etwas auf: Es gab einige falsch codierte HTML-Texte in einem varchar(max)-Feld innerhalb der Friends-Tabelle (genauer gesagt einige codierte Kommentarsymbole vom Typ <!-- im Feld "Narrative"). Die verdächtige Datensatz sah so aus:

Name    Geburtsdatum    Narrative
====    =========    ============== 
Fred    21-Okt-79    <!--HTML-Kommentar -->Es war einmal...

Bemerkenswert ist das codierte HTML-Symbol "<", was für ein "<" Zeichen stand. Irgendwie hatte es seinen Weg in die Datenbank gefunden und mein C#-Code konnte es nicht erkennen! Es ist jedes Mal am connect.Open() gescheitert! Nachdem ich diese eine Datensatz in der Datenbanktabelle Friends manuell bearbeitet und das decodierte "<" Zeichen eingefügt hatte, funktionierte alles! So hätte dieser Datensatz aussehen sollen:

Name    Geburtsdatum    Narrative
====    =========    ============== 
Fred    21-Okt-79    Es war einmal...

Ich habe den einen fehlerhaften Datensatz bearbeitet, indem ich die folgende einfache UPDATE-Anweisung verwendet habe. Aber wenn Sie mehrere problematische Datensätze mit codiertem HTML haben, benötigen Sie möglicherweise eine umfangreichere UPDATE-Anweisung, die die REPLACE-Funktion verwendet:

UPDATE Friends SET Narrative = 'Es war einmal...' WHERE Narrative LIKE '<%'

Also, die Moral von der Geschichte ist (zumindest in meinem Fall), bereinigen Sie Ihren HTML-Inhalt, bevor Sie ihn in der Datenbank speichern, und Sie erhalten diesen kryptischen SQL Server Fehler erst gar nicht! (Äh, das ordnungsgemäße Säubern/Decodieren Ihres HTML-Inhalts ist das Thema einer anderen Diskussion, die eine separate StackOverflow-Suche wert ist, wenn Sie weitere Informationen benötigen!)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X