Коли я відчув цю помилку в Visual Studio,
"Під час встановлення з'єднання з SQL сервером сталася помилка, пов’язана з мережею або для конкретного примірника. Сервер не знайдено або був недоступний. Переконайтеся, що ім'я екземпляра правильне і що SQL Server налаштований для дозволу віддалених з'єднань. (постачальник: Named Pipes Provider, помилка: 40 - Не вдалося відкрити з'єднання з SQL Server) "
... саме під час виконання наступного коду C # намагався отримати мої дані SQL Server для відображення їх у сітці. Перерва сталася саме на лінії, що говорить 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
}
}
}
}
Це було незрозумілим, оскільки запит SQL був дуже простим, у мене була правильна лінія підключення, і сервер бази даних був доступний. Я вирішив самостійно запустити фактичний запит SQL в студії управління SQL, і він пройшов чудово і отримав кілька записів. Але в результатах запиту виділялося одне: в полі типу друзів було знайдено некоректно закодований текст HTML у полі типу varchar (max) (конкретно, деякі кодовані символи коментарів, подібні <!--
до даних стовпця "Оповідання"). Рядок даних підозрюваного виглядав приблизно так:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Помітьте кодований HTML-символ " <
", який позначав символ "<". Якимось чином пробився в базу даних, і мій код C # не зміг підібрати! Помилка кожного разу прямо на лінії connect.Open ()! Після того як я вручну відредагував один рядок даних у таблиці бази друзів і замість цього поставив розшифрований символ "<", все працювало! Ось як повинен виглядати цей рядок:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Я відредагував один поганий рядок, який у мене був, використовуючи цей простий оператор UPDATE нижче. Але якщо у вас було декілька порушених рядків закодованого HTML, вам може знадобитися більш детальний оператор UPDATE, який використовує функцію ЗАМІНИ:
UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '<%'
Отже, мораль історії полягає в тому, щоб (принаймні, в моєму випадку) оздоровити ваш HTML-вміст, перш ніж зберігати його в базі даних, і ви не отримаєте в першу чергу цієї криптованої помилки SQL Server! (Ага, правильна дезіннізація / розшифровка вмісту HTML є предметом ще однієї дискусії, гідної окремого пошуку StackOverflow, якщо вам потрібна додаткова інформація!)