Als dieser Fehler in Visual Studio auftrat,
„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. (Provider: Named Pipes Provider, Fehler: 40 - Verbindung zu SQL Server konnte nicht hergestellt werden) ”
... war es während der Ausführung des folgenden C # -Codes, der versuchte, meine SQL Server-Daten abzurufen, um sie in einem Raster anzuzeigen. Die Unterbrechung trat genau in der Zeile auf, in der connect.Open () angegeben ist:
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, weil die SQL-Abfrage sehr einfach war, ich die richtige Verbindungszeichenfolge hatte und der Datenbankserver verfügbar war. Ich habe mich entschlossen, die eigentliche SQL-Abfrage manuell in SQL Management Studio auszuführen. Sie lief einwandfrei und lieferte mehrere Datensätze. In den Abfrageergebnissen fiel jedoch eines auf: In einem Feld vom Typ varchar (max) in der Tabelle "Friends" befand sich ein nicht ordnungsgemäß codierter HTML-Text (insbesondere einige codierte Kommentarsymbole der Art, <!--
die in den Daten der Spalte "Narrative" enthalten sind). Die verdächtige Datenzeile sah folgendermaßen aus:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Beachten Sie das codierte HTML-Symbol " <
", das für ein "<" - Zeichen steht. Irgendwie gelangte das in die Datenbank und mein C # -Code konnte es nicht aufnehmen! Es ist jedes Mal direkt in der Zeile connect.Open () fehlgeschlagen! Nachdem ich diese eine Datenzeile in der Datenbanktabelle Friends manuell bearbeitet und stattdessen das dekodierte Zeichen "<" eingegeben hatte, funktionierte alles! So hätte diese Reihe aussehen sollen:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Ich habe die eine fehlerhafte Zeile, die ich hatte, mit dieser einfachen UPDATE-Anweisung unten bearbeitet. Wenn Sie jedoch mehrere fehlerhafte Zeilen mit codiertem HTML hatten, benötigen Sie möglicherweise eine ausführlichere UPDATE-Anweisung, die die REPLACE-Funktion verwendet:
UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '<%'
Die Moral der Geschichte lautet also (zumindest in meinem Fall), Ihren HTML-Inhalt zu bereinigen, bevor Sie ihn in der Datenbank speichern, und Sie werden diesen kryptischen SQL Server-Fehler überhaupt nicht erhalten! (Äh, die ordnungsgemäße Bereinigung / Dekodierung Ihres HTML-Inhalts ist Gegenstand einer weiteren Diskussion, die einer separaten StackOverflow-Suche würdig ist, wenn Sie weitere Informationen benötigen!)