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?

4voto

Bill Needels Punkte 505

Zusammenfassung

Um dieses Problem zu beheben, das beim Ausführen einer lokalen App vs. einer entfernten Datenbank auftritt, verwenden Sie den SQL Server-Konfigurations-Manager, um ein Alias für die entfernte Datenbank hinzuzufügen.

Details

Ich bin kürzlich auf dieses Problem gestoßen, als ich von einem Windows 7- auf ein Windows 10-Laptop umgestiegen bin. Ich hatte eine lokale Entwicklungs- und Laufzeitumgebung, die auf unsere Entwicklungsdatenbank auf einem entfernten Server zugriff. Wir greifen über ein Serveralias auf die Entwicklungsdatenbank zu, das über das SQL Server-Client-Netzwerk-Dienstprogramm (cliconfg.exe) eingerichtet wurde. Nachdem ich bestätigt hatte, dass das Alias sowohl in den 64- als auch in den 32-Bit-Versionen des Dienstprogramms korrekt eingerichtet war und dass der Datenbankserver vom neuen Laptop aus über SSMS erreichbar war, erhielt ich immer noch den Fehler, den der OP gesehen hat (natürlich nicht die IP-Adresse des OP).

Es war erforderlich, den SQL Server-Konfigurations-Manager zu verwenden, um ein Alias für den entfernten Entwicklungsdatbenserver hinzuzufügen. Das hat die Dinge gleich richtiggestellt.

Bildbeschreibung hier eingeben

4voto

Kalyan Hurkat Punkte 81

Versuche ein , und eine Portnummer (zum Beispiel ,1433) am Ende deiner Verbindungszeichenfolge hinzuzufügen.

4voto

Chase07 Punkte 401

Warum dieser Fehler so lästig und laut ist, einfach weil er in verschiedenen Situationen auftreten kann.

Ich habe alle oben genannten Ansätze bereits ausprobiert und werde immer noch gesaugt. Stellen Sie also sicher, dass Sie dasselbe wie ich getan haben, bevor Sie weiter nach unten browsen.

Vielleicht bin ich nicht in der Lage, Ihre Situation sofort zu lösen, aber ich kann Ihnen eine Richtung oder ein Denkanstoß geben (Derjenige, der schließlich hierher gerutscht ist). Ich habe begonnen, über den Fehler in meinem laufenden Programm nachzudenken, nachdem ich mir sicher war, dass der Instanzname klar richtig ist und meine Datenbank gemäß den oben genannten Methoden auf Fernbedienung eingestellt habe. Danach verdächtigte ich, dass in meinem Code-Snippet der SQL-Verbindung etwas schief geht.

Lösung meines Problems:

  • Überprüfen Sie meine sqlconnection Funktion

  • Klicken Sie, um die Konfiguration zu sehen

  • Neue Verbindung erstellen

Bildbeschreibung hier eingeben

  • Wählen Sie Ihren Servernamen aus

Bildbeschreibung hier eingeben

Es hat bei mir funktioniert, indem ich darüber nachgedacht habe, was genau im Verbindungsprozess passiert. Ich hoffe, mein Denken wird Sie dazu bringen, Ihren Fehler zu lösen.

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!)

4voto

JohnC Punkte 1768

Ich bin von einem Arbeitslaptop mit Windows 7 zu einem Arbeitslaptop mit Windows 10 umgezogen. Ich hatte erfolgreich SSMS2016 unter Windows 7 verwendet.

Das gleiche Problem trat bei der Verwendung von SSMS2012 oder SSMS2016 auf. Mein Zugriff auf die 10 SQL-Server mit Windows-Authentifizierung war immer noch gleich. Ich konnte dies von einem anderen Server aus testen. Allerdings konnten sich 2 der 10 Server nicht von meinem Laptop aus verbinden. Beide waren MS SQL Server 9, aber ich konnte mich mit anderen SQL Server 9-Datenbanken verbinden.

Die Lösung bestand darin, eine Firewall-Regel hinzuzufügen (mit Windows Firewall mit erweiterter Sicherheit).

Erstellen Sie eine eingehende Regel für jedes SSMS- z. B. C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Ssms.exe

Ich bin kein Netzwerkexperte, deshalb habe ich die Details nicht eingeschlossen, aber hoffentlich wird es Sie in die richtige Richtung weisen.


Fehlermeldung (vor der Firewall-Regel) "Ein netzwerkbezogener oder instanzspezifischer Fehler ist aufgetreten, als versucht wurde, eine Verbindung mit dem SQL Server herzustellen. Der Server wurde nicht gefunden oder war nicht zugänglich. Überprüfen Sie, ob der Instanzname korrekt ist und ob der SQL Server so konfiguriert ist, dass er Remoteverbindungen zulässt. (Anbieter: SQL Network Interfaces, Fehler: 26 - Fehler beim Suchen des Servers/der angegebenen Instanz) (.Net SqlClient Data Provider)"

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