Quando tive esse erro no Visual Studio,
“Ocorreu um erro relacionado à rede ou à instância ao estabelecer uma conexão com o SQL Server. O servidor não foi encontrado ou não estava acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado para permitir conexões remotas. (provedor: provedor de pipes nomeados, erro: 40 - não foi possível abrir uma conexão com o SQL Server) ”
... foi durante a execução do código C # a seguir, que estava tentando obter meus dados do SQL Server para exibi-los em uma grade. A quebra ocorreu exatamente na linha que diz 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
}
}
}
}
Isso era inexplicável porque a consulta SQL era muito simples, eu tinha a string de conexão correta e o servidor de banco de dados estava disponível. Decidi executar manualmente a consulta SQL real no SQL Management Studio e ela funcionou muito bem e gerou vários registros. Mas uma coisa se destacou nos resultados da consulta: havia algum texto HTML codificado incorretamente dentro de um campo do tipo varchar (max) na tabela Friends (especificamente, alguns símbolos de comentários codificados da classificação <!--
apresentada nos dados da coluna "Narrativa"). A linha de dados suspeitos tinha a seguinte aparência:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Observe o símbolo HTML codificado " <
", que representava um caractere "<". De alguma forma, isso entrou no banco de dados e meu código C # não pôde pegá-lo! Sempre falhava na linha connect.Open ()! Depois que editei manualmente essa linha de dados na tabela de banco de dados Friends e coloquei o caractere "<" decodificado, tudo funcionou! Aqui está como essa linha deveria ser:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Eu editei a única linha ruim que eu tinha usando esta simples instrução UPDATE abaixo. Mas se você tiver várias linhas ofensivas de HTML codificado, poderá precisar de uma instrução UPDATE mais elaborada que use a função REPLACE:
UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '<%'
Portanto, a moral da história é (pelo menos no meu caso), higienize seu conteúdo HTML antes de armazená-lo no banco de dados e você não receberá esse erro enigmático do SQL Server! (Sanitizar / decodificar adequadamente seu conteúdo HTML é o assunto de outra discussão digna de uma pesquisa separada do StackOverflow, se você precisar de mais informações!)