Cuando experimenté este error en Visual Studio,
“Se produjo un error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. El servidor no se encontró o no estaba accesible. Verifique que el nombre de la instancia sea correcto y que SQL Server esté configurado para permitir conexiones remotas. (proveedor: proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión a SQL Server) "
... fue durante la ejecución del siguiente código C #, que intentaba obtener mis datos de SQL Server para mostrarlos en una cuadrícula. La ruptura ocurrió exactamente en la línea que dice 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
}
}
}
}
Era inexplicable porque la consulta SQL era muy simple, tenía la cadena de conexión correcta y el servidor de la base de datos estaba disponible. Decidí ejecutar la consulta SQL real manualmente en SQL Management Studio y funcionó bien y arrojó varios registros. Pero una cosa se destacó en los resultados de la consulta: había un texto HTML codificado incorrectamente dentro de un campo de tipo varchar (max) dentro de la tabla Amigos (específicamente, algunos símbolos de comentarios codificados del tipo <!--
alojado dentro de los datos de la columna "Narrativa"). La fila de datos sospechosos se veía así:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Observe el símbolo HTML codificado " <
", que representaba un carácter "<". ¡De alguna manera eso llegó a la base de datos y mi código C # no pudo recogerlo! Falló cada vez en la línea connect.Open ()! Después de editar manualmente esa fila de datos en la tabla de la base de datos Amigos y poner el carácter "<" decodificado, ¡todo funcionó! Así es como debería haber sido esa fila:
Name Birthdate Narrative
==== ========= ==============
Fred 21-Oct-79 <!--HTML Comment -->Once upon a time...
Edité la única fila incorrecta que tenía usando esta simple declaración ACTUALIZAR a continuación. Pero si tuviera varias filas ofensivas de HTML codificado, es posible que necesite una instrucción UPDATE más elaborada que use la función REPLACE:
UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '<%'
Entonces, la moraleja de la historia es (al menos en mi caso), desinfectar su contenido HTML antes de almacenarlo en la base de datos y no obtendrá este error críptico de SQL Server en primer lugar. (Uh, desinfectar / decodificar adecuadamente su contenido HTML es el tema de otra discusión digna de una búsqueda por separado de StackOverflow si necesita más información).