40 - Error Could not open a connection to sql server)

Después de instalar el programa en otro equipo, el permite el ingreso a la aplicación, utilizando la cadena de conexión del setting, dentro del sistema utilizo una consulta a la base de datos, pero al dar el click, me saca el siguiente error
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (Provider: name Pipes Provider. Error: 40 - Error Could not open a connection to sql server)
En esta parte del código utiliza la cadena de conexión del setting para acceder a la base de datos.
Using cnn As New SqlConnection(My.Settings.RecicopConnectionString3)
El sql esta instalado de forma local.

1 Respuesta

Respuesta
1
El mensaje de error es que no encuentra el servidor de SQL, debes verificar al cadena de conexión que estas utilizando
Buenas tardes
Encontré una blog donde definen el mismo problema que tengo yo y dicen que lo solucionaron pero no dice como.
El problema que tengo es que no puedo acceder a la base de datos porque me tira un error al buscar la ConnectionString.
Le busqué la vuelta y sigue sin funcionar.
No se si tengo que hacerle algo al app. Config o si me falta alguna sentencia como para que el visual studio 2008 se de cuenta de a donde tiene que ir a buscarla.
Les dejo unas capturas de pantalla para que lo vean mejor.
http://b.imagehost.org/view/0101/error
La respuesta de la otra persona es esta.
El problema parece ser que no está encontrando el connection string en tu archivo config. Veo que el error te aparece en tu capa de datos, que es una librería de clases y que presumiblemente mandas llamar desde una aplicación windows forms. Ahora, ConfigurationManager.ConnectionStrings[1] "obtiene los datos ... para la configuración predeterminada de la aplicación actual", lo cual entiendo que entonces busca en el app. Config del ejecutable. En la imagen que pones, sin embargo, se ve que creaste un app. config *para tu librería*. Si pones el connection string en el app. Config de tu librería no te va a funcionar, tiene que estar en el app. Config del ejecutable que manda llamar a tu librería.
¿Es este el caso? ¿Podrías revisar lo que te comento y hacer una pruebilla, de favor?
[1] http://msdn.microsoft.com/es-es/library/system.configuration.configurationmanager.connectionstrings(v=VS.80).aspx
Saludos.
El contesta que ya lo arreglo.
Millones de Gracias!
Funcionó todo perfectamente
Gracias, gracias y más gracias
Pero no entiendo como hacer para arreglarlo, si me puedes colaborar
Gracias
Elimina el app. Config del proyecto de librería de clases y las entradas que tienes allí las pasas al app. Config del proyecto windows
Buenas noches.
Ya lo hice y sigue igual.
Me di cuenta de lo siguiente:
La conexión la tengo así
RecicopConnectioStrig= connectioString= a la cadena de conexion al servidor.
Cuando genero el instalador, y utilizo esta cadena de conexión para permitir el ingreso del usuario, funciona correctamente, pero cuando la necesito utilizar en otro proceso dentro de la aplicación, me genera error.
La pregunta es como puedo usar la misma conexión de mysetting, varias veces, en la misma aplicación.
Al generar un error debes tener algo malo, pero como no dices cual es el mensaje de error....
Buenos días
Saca el mismo error del principio.
40 - Error Could not open a connection to sql server
No encuentra el connectioString, eso e lo que creo
Supongo que entonces no estas instanciando la instrucción que obtiene el valor desde el appconfig
Buenas tardes,
Eso es precisamente lo que necesito hacer, pero no se como se hace.
Gracias.
La verdad en algunas partes estoy utilizando lo siguiente
Dim cnn As New SqlConnection(My.Settings.RecicopConnectionString)
Me imagino que en esta parte estoy instanciando la conexión que obtengo del app. Config.
Pregunta en esta parte del código si esta instanciada la conexión
Public Function ListarUsuariosPorCodigo(ByVal Id_Empleado As String) As List(Of UsuariosEntidad)
Dim lista As New List(Of UsuariosEntidad)
Using cnn As New SqlConnection(My.Settings.RecicopConnectionString3)
cnn.Open()
Dim cmd As New SqlCommand("[UsuariosPorCodigo]", cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@Id_Empleado", Id_Empleado)
Dim dr As SqlDataReader
dr = cmd.ExecuteReader
While dr.Read
Dim regis As New UsuariosEntidad
With regis
.Id_Empleado = IIf(dr.GetValue(0) Is DBNull.Value, "", dr.GetValue(0))
.Id_Empresa = IIf(dr.GetValue(1) Is DBNull.Value, Nothing, dr.GetValue(1))
.Usuario = IIf(dr.GetValue(2) Is DBNull.Value, Nothing, dr.GetValue(2))
.Password = IIf(dr.GetValue(3) Is DBNull.Value, Nothing, dr.GetValue(3))
.Nombre = IIf(dr.GetValue(4) Is DBNull.Value, Nothing, dr.GetValue(4))
.Nivel = IIf(dr.GetValue(5) Is DBNull.Value, Nothing, dr.GetValue(5))
.Conectado = IIf(dr.GetValue(6) Is DBNull.Value, Nothing, dr.GetValue(6))
End With
lista.Add(regis)
End While
End Using
Return lista
End Function
Gracias
Sucede que My. Settings es una cosa, diferente a las configuraciones del App. Config.
http://msdn.microsoft.com/es-es/library/saa62613(VS.80).aspx
y
http://msdn.microsoft.com/es-es/library/25zf0ze8(v=VS.80).aspx
Si usas valores de MySettings y de app. Config debes estar seguro que ue ambos son iguales, ademas los valores de My. Sttings no podrás cambiarlos de manera manual cuando llegues a un pc con otras configuraciones, tendrías que compilar todo el proyecto nuevamente.
Buenas tardes,
Gracias por la información.
Sucede lo siguiente.
Para logearme en el Sistema uitilizo el siguiente código.
Dim cnn As New SqlConnection(My.Settings.RecicopConnectionString)
El instancia la conexión y permite el ingreso al sistema si los datos son correctos.
Luego en el menu principal llamo un formulario que tiene un datagridview y llena los datos de una base de datos.
Esto se hace en tres capas.
Dim cnn As New SqlConnection(My.Settings.RecicopConnectionString)
Me imagino que en esta parte estoy instanciando la conexión que obtengo del app. Config.
Pregunta en esta parte del código si esta instanciada la conexión
Public Function ListarUsuariosPorCodigo(ByVal Id_Empleado As String) As List(Of UsuariosEntidad)
Dim lista As New List(Of UsuariosEntidad)
Using cnn As New SqlConnection(My.Settings.RecicopConnectionString3)
cnn.Open()
Dim cmd As New SqlCommand("[UsuariosPorCodigo]", cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@Id_Empleado", Id_Empleado)
Dim dr As SqlDataReader
dr = cmd.ExecuteReader
While dr.Read
Dim regis As New UsuariosEntidad
With regis
.Id_Empleado = IIf(dr.GetValue(0) Is DBNull.Value, "", dr.GetValue(0))
.Id_Empresa = IIf(dr.GetValue(1) Is DBNull.Value, Nothing, dr.GetValue(1))
.Usuario = IIf(dr.GetValue(2) Is DBNull.Value, Nothing, dr.GetValue(2))
.Password = IIf(dr.GetValue(3) Is DBNull.Value, Nothing, dr.GetValue(3))
.Nombre = IIf(dr.GetValue(4) Is DBNull.Value, Nothing, dr.GetValue(4))
.Nivel = IIf(dr.GetValue(5) Is DBNull.Value, Nothing, dr.GetValue(5))
.Conectado = IIf(dr.GetValue(6) Is DBNull.Value, Nothing, dr.GetValue(6))
End With
lista.Add(regis)
End While
End Using
Return lista
End Function
Pero el problema es que aquí n me hace la conexión con el servidor.
Me sale el mismo error 40.
Revise y la cadena de conexión que tengo en el app.conf. Es igual a la cadena de conexión que tengo en el my.setting.
En espera de sus comentarios.
Gracias
Pero lo que ue pasa es que NO estas usando el app. Config, estas usando es el settings, y la verdad no se si en tu dll, o sea en tu capa de conexión en donde tienes e código que coloacs aquí MySettings tiene valor, tienes que hacer un break point en ese punto y verificar que si llegue el valor correcto en el setting
Buenas tardes,
Que pena que se vuelve uno es canson, pero como utilizo el app.conf, no se como hacerlo.
Estoy estudiando es solo y con la ayuda de ustedes, pero he leído mucho pero no he encontrado un ejemplo en tres capas de como usar el app.conf.
Le agradezco cualquier colaboración.
Gracias
Modificas el archivo app. Config del proyecto de windows forms y le colocas la siguiente sección:
  <connectionStrings>
    <add name="Conexion" connectionString="Data Source=Servidor;Initial Catalog=basededatos;User ID=usuario;Password=password;MultipleActiveResultSets=True; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
El tu proyecto en donde vas a usarlo, le adicionas una referencia a System. Configuration.
En tu clase le haces un Imports a System. Configuration
Y llamas u obtienes la cadena de conexión del app. Config de la siguiente manera:
ConfigurationManager.ConnectionStrings("VALAConexion"])ToString()
Buenos días
El archivo app. Config querdo así
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Presentacion.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings>
<add name="Conexion"
connectionString="Data Source=DESKTOP;Initial Catalog=Recicop;Persist Security Info=True;User ID=inser;Password=inser;MultipleActiveResultSets=True;Trusted_Connection=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.diagnostics>
aqui cuando utilizo el app.config quedo asi.
Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("Data Source=DESKTOP;Initial Catalog=Recicop;Persist Security Info=True;User ID=inser;Password=inser;MultipleActiveResultSets=True;Trusted_Connection=True;").ToString())
Al correr el programa, saca el error siguiente:
Referencia a objeto no establecida como instancia de un objeto.
No se le he buscado y nada.
Gracias
Si te fijas bien en lo que envíe Configuration. Manager, recibe como parámetro, el nombre que se define dentro de la sección del app. Config, tu estas haciendo algo que yo no te dije que ehicieras.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas