none
Error al cambiar de máquina en el acceso a SQL Server con Entity Framework 4.0, conexión remota RRS feed

  • Pregunta

  • Hola,

    uso entity Framework de VS 2010.

    Cuándo desarollo en la máquina dónde tengo instalado el SQL Server 2008 R2 y el VS 2010, funciona perfectamente.

    Pero cuándo copio la solución del VS 2010 e intento compilar en otro PC no lo consigue.

    Mi ConnecionStrings es:

     

    	 <add name="RUPXEntities" 
    		 connectionString="metadata=res://*/Entity.Entity.Rupx.csdl|res://*/Entity.Entity.Rupx.ssdl|res://*/Entity.Entity.Rupx.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=WIN-7FZFQY60S9A;Initial Catalog=RUPX;Persist Security Info=True;User ID=xxxx;Password=yyyy;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    

     

    El servidor es "Data Source=WIN-7FZFQY60S9A" que se encuentra en la misma red que el PC desde el que intento acceder, llego con un ping o mapeando carpetas.

    Si me voy al SQL Server 2008 R2, dentro de "WIN-7FZFQY60S9A", botón derecho, en la carpeta "Connections" para "Server Remote Connections" tengo activado el Checkbox de "Aloow remote connections to this server". 

    Para el usuario con el que intento acceder, digamos "xxxx", tengo permisos "Connect SQL" , "Authenticate server", desde la opción del botótn derecho en el nombre de servidor y "permissions".

    El error viene porque el edmx no se consigue generar por alguna razón de forma remota.

    ¿Hay que indicar algo más en la cadena de conexión? ¿Algún parámetro del EDMX? ¿Algún posible problema de permisos en la configuración del usuario o del servidor en SQL Server? No sé por dónde continuar. 

    Para cambiar de servidor en la cadena conexión, ¿simplemente valdría con cambiar el data source (y el usuario si usuario si hubiera cambiado) o hay que hacer más cambios?

     

    Gracias.


    Regards, Pablo Martín Gutierrez.
    jueves, 26 de mayo de 2011 8:31

Respuestas

  • Hola Blonix

    He leido tu post y saco algunas conclusiones al respecto... deduzco que el problema es simplemente la comunicacion entre tu máquina y la máquina que contiene SQL Server 2008 r2.

    Aunque hagas ping al pc y puedas mapear carpetas eso no quiere decir que puedas conectarte a SQL SERVER R2 casi seguro tengas ese puerto bloqueado por algun firewall.

    La solucion en si pasa por hacer algunas pruebas e ir descartando los problemas...

    1º COMPROBAR QUE REALMENTE CONECTAS: Crea un fichero de vínculo de datos universal (*.udl) en la máquina donde vas a desarrollar (http://msdn.microsoft.com/es-es/library/aa301691(v=vs.71).aspx), este fichero en si solo te vá confirmar si realmente puedes conectar a la instancia de SQL SERVER R2 de la otra máquina.  Si no ves el nombre del HOST indica la IP de la máquina directamente en los datos que te pide... el udl

    2º COMPRUEBA QUE LOS PUERTOS ESTAN ABIERTOS, cuando digo puertos me refiero a 1434 TCP y UDP... porque por ejemplo es posible que tambien debas abrir el puerto 1434 UDP para el servicio SQL Browser para la resolución de nombres.  te dejo un enlace para estos temas

    http://msdn.microsoft.com/en-us/library/cc646023.aspx

    yo creo que esas dos comprobaciones te van a dar mucha informacion... del problema.

    Espero que lo soluciones , saludos,

     

     

     


    Danicuco - 2011
    • Marcado como respuesta Blonix jueves, 26 de mayo de 2011 11:37
    jueves, 26 de mayo de 2011 9:26

Todas las respuestas

  • Hola Blonix

    He leido tu post y saco algunas conclusiones al respecto... deduzco que el problema es simplemente la comunicacion entre tu máquina y la máquina que contiene SQL Server 2008 r2.

    Aunque hagas ping al pc y puedas mapear carpetas eso no quiere decir que puedas conectarte a SQL SERVER R2 casi seguro tengas ese puerto bloqueado por algun firewall.

    La solucion en si pasa por hacer algunas pruebas e ir descartando los problemas...

    1º COMPROBAR QUE REALMENTE CONECTAS: Crea un fichero de vínculo de datos universal (*.udl) en la máquina donde vas a desarrollar (http://msdn.microsoft.com/es-es/library/aa301691(v=vs.71).aspx), este fichero en si solo te vá confirmar si realmente puedes conectar a la instancia de SQL SERVER R2 de la otra máquina.  Si no ves el nombre del HOST indica la IP de la máquina directamente en los datos que te pide... el udl

    2º COMPRUEBA QUE LOS PUERTOS ESTAN ABIERTOS, cuando digo puertos me refiero a 1434 TCP y UDP... porque por ejemplo es posible que tambien debas abrir el puerto 1434 UDP para el servicio SQL Browser para la resolución de nombres.  te dejo un enlace para estos temas

    http://msdn.microsoft.com/en-us/library/cc646023.aspx

    yo creo que esas dos comprobaciones te van a dar mucha informacion... del problema.

    Espero que lo soluciones , saludos,

     

     

     


    Danicuco - 2011
    • Marcado como respuesta Blonix jueves, 26 de mayo de 2011 11:37
    jueves, 26 de mayo de 2011 9:26
  • Muchas Gracias Daniuco,

     

    la verdad que había creado el UDL pero lo había probado en el servidor directamente ¬¬ jaja tienes razón en la máquina que accede en remoto no llego, voy con los puertos y el FireWall.


    Regards, Pablo Martín Gutierrez.
    jueves, 26 de mayo de 2011 10:16
  • Muchas Gracias Daniuco,

     

    la verdad que había creado el UDL pero lo había probado en el servidor directamente ¬¬ jaja tienes razón en la máquina que accede en remoto no llego, voy con los puertos y el FireWall.


    Regards, Pablo Martín Gutierrez.

    Buenas de nuevo,

    he seguido el manual que dijiste pero no consigo acceder desde fuera.

    Como dice el manual he ido a "SQL Server Configuration Manager" y dentro de "SQL Server Network Configuration">"Protocols for MSSQLSERVER" en "TCP/IP" pestaña "IP Adresses" para la IP Address desde la que accedo desde fuera (192.168.1.30) tengo:

    • Active = Yes.
    • Enabled = Yes.  
    • "TCP Dynamics Ports" está en blanco (con un 0 se supone que se usa).
    • TCP Port = 1433,1434.

    Después he ido a "SQL Server Services" y en "SQL Server (MSSQLSERVER)" hice un RESTART.

    El UDL sigue sin funcionar (El UDL está correcto ya que funciona desde el servidor). Para acceder al servidor en server name tengo "192.168.1.30,1433" (también he probado con 192.168.1.30,1434) pero no hay suerte.

    No sé si necesito hacer algo más.

     

     


    Regards, Pablo Martín Gutierrez.
    jueves, 26 de mayo de 2011 11:02
  • Muchas Gracias Daniuco,

     

    la verdad que había creado el UDL pero lo había probado en el servidor directamente ¬¬ jaja tienes razón en la máquina que accede en remoto no llego, voy con los puertos y el FireWall.


    Regards, Pablo Martín Gutierrez.

    Buenas de nuevo,

    he seguido el manual que dijiste pero no consigo acceder desde fuera.

    Como dice el manual he ido a "SQL Server Configuration Manager" y dentro de "SQL Server Network Configuration">"Protocols for MSSQLSERVER" en "TCP/IP" pestaña "IP Adresses" para la IP Address desde la que accedo desde fuera (192.168.1.30) tengo:

    • Active = Yes.
    • Enabled = Yes.  
    • "TCP Dynamics Ports" está en blanco (con un 0 se supone que se usa).
    • TCP Port = 1433,1434.

    Después he ido a "SQL Server Services" y en "SQL Server (MSSQLSERVER)" hice un RESTART.

    El UDL sigue sin funcionar (El UDL está correcto ya que funciona desde el servidor). Para acceder al servidor en server name tengo "192.168.1.30,1433" (también he probado con 192.168.1.30,1434) pero no hay suerte.

    No sé si necesito hacer algo más.

     

     


    Regards, Pablo Martín Gutierrez.

    Me faltaba un paso según el siguiente enlace.

    He abierto en el firewall los puertos TCP 1433 y 1434 UDP.

    He reiniciado SQL Server (MSSQLSERVER) y funciona correctamente el UDL.

     

    Pero en el Entity Framework tengo aún el error al compilar porqué no consigue crear el EDMX. 

    la cadena de conexión la he dejado como:

     

    <add name="RUPXEntities" connectionString="metadata=res://*/Entity.Entity.Rupx.csdl|res://*/Entity.Entity.Rupx.ssdl|res://*/Entity.Entity.Rupx.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=192.168.1.30,1433;Initial Catalog=RUPX;Persist Security Info=True;User ID=xxxx;Password=yyyy;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    
    <br/>
    
    Usando la misma desde el propio servidor sí tengo acceso.
    

     


    Regards, Pablo Martín Gutierrez.
    jueves, 26 de mayo de 2011 11:15
  • Muchas Gracias Daniuco,

     

    la verdad que había creado el UDL pero lo había probado en el servidor directamente ¬¬ jaja tienes razón en la máquina que accede en remoto no llego, voy con los puertos y el FireWall.


    Regards, Pablo Martín Gutierrez.

    Buenas de nuevo,

    he seguido el manual que dijiste pero no consigo acceder desde fuera.

    Como dice el manual he ido a "SQL Server Configuration Manager" y dentro de "SQL Server Network Configuration">"Protocols for MSSQLSERVER" en "TCP/IP" pestaña "IP Adresses" para la IP Address desde la que accedo desde fuera (192.168.1.30) tengo:

    • Active = Yes.
    • Enabled = Yes.  
    • "TCP Dynamics Ports" está en blanco (con un 0 se supone que se usa).
    • TCP Port = 1433,1434.

    Después he ido a "SQL Server Services" y en "SQL Server (MSSQLSERVER)" hice un RESTART.

    El UDL sigue sin funcionar (El UDL está correcto ya que funciona desde el servidor). Para acceder al servidor en server name tengo "192.168.1.30,1433" (también he probado con 192.168.1.30,1434) pero no hay suerte.

    No sé si necesito hacer algo más.

     

     


    Regards, Pablo Martín Gutierrez.

    Me faltaba un paso según el siguiente enlace.

    He abierto en el firewall los puertos TCP 1433 y 1434 UDP.

    He reiniciado SQL Server (MSSQLSERVER) y funciona correctamente el UDL.

     

    Pero en el Entity Framework tengo aún el error al compilar porqué no consigue crear el EDMX. 

    la cadena de conexión la he dejado como:

     

    <add name="RUPXEntities" connectionString="metadata=res://*/Entity.Entity.Rupx.csdl|res://*/Entity.Entity.Rupx.ssdl|res://*/Entity.Entity.Rupx.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=192.168.1.30,1433;Initial Catalog=RUPX;Persist Security Info=True;User ID=xxxx;Password=yyyy;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    
    <br/>
    
    Usando la misma desde el propio servidor sí tengo acceso.
    

     


    Regards, Pablo Martín Gutierrez.

    Lo raro es que si creo una conexión Nueva, si que funciona. 

    Por otro lado desde el ISS de la máquina local, he probado a intentarme conectar y funciona.

    Sólo falla cuando se compila por alguna razón.


    Regards, Pablo Martín Gutierrez.
    jueves, 26 de mayo de 2011 11:37
  • Hola Blonix,

    He leido todos tus post, por un lado veo que ya hemos logrado conectar con UDL y que tambien hemos logrado que cuando generas un Modelo Entidad (.edmx) nuevo si que funciona, si no me equivoco el problema ahora es el que ya tienes hecho no?

    Bueno en este caso esta claro que el problema esta en esa cadena de conexion de tu modelo... he visto que indicas el puerto con la ip... prueba a quitarselo... no le indiques puerto... solo la IP... que daria algo así

    Data Source=192.168.1.30

    Si no create un modelo nuevo a parte en ese proyecto y genera algunas entidades una vez hecho mira en tu fichero de configuracion exacatmente que cadena de conexion te ha dejado... comparala con la tuya a ver si existen diferencias en la parte de la cadena de conexion, ;-)

     

    La ultima solucion es que te vuelvas a generar tu modelo a partir del esquema de BBDD pero no en local sino apuntando desde la otra máquina... jejej

    Espero que te sirva las ideas...

     

    Saludos.

     


    Danicuco - 2011
    jueves, 26 de mayo de 2011 14:35
  • Hola,

    ya hice lo que comentas.

    Cree un EDMX nuevo (con: IP,Puerto) y funcionaba. 

    También en el propio servidor cambié el nombre de servidor por IP,puerto y funcionaba.

    Lo que no funciona es con el código copiado acceder directamente en remoto, nose si el EDMX por detrás incrusta algo en código.

    Para desarrollar en remoto me vale, lo que me asusta es si quiero cambiar de entorno el poner el nuevo connection string, cree una pregunta en el foro con ello. Por si interesa.

     

    Gracias.


    Regards, Pablo Martín Gutierrez.
    jueves, 26 de mayo de 2011 16:02