Visual Studio'da bu hatayla karşılaştığımda,
“SQL Server'a bağlantı kurulurken ağla ilgili veya örneğe özgü bir hata oluştu. Sunucu bulunamadı veya erişilemedi. Örnek adının doğru olduğunu ve SQL Server'ın uzak bağlantılara izin verecek şekilde yapılandırıldığını doğrulayın. (sağlayıcı: Adlandırılmış Kanallar Sağlayıcısı, hata: 40 - SQL Server bağlantısı açılamadı) ”
... SQL Server verilerimi bir tablo içinde görüntülemek için elde etmeye çalışıyordu aşağıdaki C # kodunun yürütülmesi sırasında oldu. Ara tam olarak connect.Open () yazan satırda gerçekleşti:
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
}
}
}
}
SQL sorgusu çok basit, doğru bağlantı dizesi vardı ve veritabanı sunucusu kullanılabilir olduğu için açıklanamazdı. Gerçek SQL sorgusu kendimi SQL Management Studio'da kendim çalıştırmaya karar verdim ve iyi çalıştı ve birkaç kayıt verdi. Ancak sorgu sonuçlarında göze çarpan bir şey vardı: Arkadaşlar tablosunda bir varchar (max) türü alanında yanlış kodlanmış bazı HTML metinleri vardı (özellikle <!--
"Anlatım" sütununun verilerine yerleştirilen sıralamanın bazı kodlanmış yorum sembolleri ). Şüpheli veri satırı şöyle görünüyordu:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
<
"<" Karakteri olan " " kodlanmış HTML sembolüne dikkat edin . Her nasılsa bu veritabanı içine yol yaptı ve benim C # kodu onu alınamadı! Connect.Open () satırında her zaman başarısız oldu! Ben elle veritabanı tablo Arkadaşlar bir satır veri düzenlenmiş ve bunun yerine çözülmüş "<" karakteri koymak, her şey amele! İşte o satır şöyle görünüyordu:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Aşağıdaki basit UPDATE deyimini kullanarak tek bir kötü satırı düzenledim. Ancak, birkaç rahatsız edici kodlanmış HTML satırınız varsa REPLACE işlevini kullanan daha ayrıntılı bir UPDATE ifadesine ihtiyacınız olabilir:
UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '<%'
Öyleyse, hikayenin ahlaki (en azından benim durumumda), HTML içeriğinizi veritabanına kaydetmeden önce sterilize edin ve ilk önce bu şifreli SQL Server hatasını almayacaksınız! (Ah, HTML içeriğinizi düzgün bir şekilde dezenfekte etmek / kodunu çözmek, daha fazla bilgiye ihtiyacınız varsa ayrı bir StackOverflow aramasına değer başka bir tartışmanın konusudur!)