none
Conectar visual estudio con sql server desde Windows server 2016 RRS feed

  • Pregunta

  • Buenas Noche.

    tengo una base de datos que quiero instalar en windows server 2016 y Conectar con visual estudio desde internet en otras pcs con windows 10 como puedo hacer  la conexion  no soy muy bueno en eso alguien me puede  ayudar 

    gracias de antemano.


    Willian61x

    miércoles, 12 de septiembre de 2018 4:06

Respuestas

  • Desde el punto de vista de la programación, no hay que hacer nada en especial. Simplemente en la cadena de conexión pones la dirección correcta del servidor (bien sea la IP o bien un nombre que se resuelva a la IP del servidor) y no hay que hacer ningún cambio más, el programa es idéntico a como sería si el servidor fuese local o estuviese directamente conectado a la misma red.

    Entonces el problema se reduce a infraestructura de red y administración de sistemas. Hay que conseguir que esa dirección del servidor sea accesible desde los puestos. Aquí habría que conocer la topología de tu red. Si el servidor está en una red local que se conecta a Internet a través de un router que hace NAT, entonces habrá que configurar el router para que haga NAT-inverso desde su dirección pública a la dirección privada del servidor (y la dirección que hay que poner en la cadena de conexión de tu programa es la pública, no la privada). Por desgracia, esto se hace de manera distinta en cada marca y modelo de router, así que no tendrás más remedio que leer el manual del tuyo.

    Además de eso, hay que abrir el paso en todos los firewall que haya entre medias de la red pública y tu servidor, además de abrirlo en el firewall de Windows en el servidor si es que lo tienes activado (y sí deberías tenerlo activado salvo que tu infraestructura de red ya provea otro firewall anterior).

    En SQL Server hay que habilitar las conexiones remotas (desde el SQL Server Configuration Manager, habilitar TCP). Y hay que habilitar la autenticación mixta (desde la pestaña de seguridad en las propiedades de la instancia en SSMS), y crear cuentas para la conexión de los equipos externos, y poner en la cadena de conexión esas credenciales. Y darles a esas cuentas los mínimos permisos que necesiten para acceder a la base de datos que vayas a manejar desde el programa.

    • Propuesto como respuesta Pablo Rubio miércoles, 12 de septiembre de 2018 16:32
    • Marcado como respuesta Pablo Rubio miércoles, 12 de septiembre de 2018 18:34
    • Desmarcado como respuesta Willian61x jueves, 13 de septiembre de 2018 3:39
    • Marcado como respuesta Pablo Rubio miércoles, 19 de septiembre de 2018 21:09
    miércoles, 12 de septiembre de 2018 6:13

Todas las respuestas

  • Desde el punto de vista de la programación, no hay que hacer nada en especial. Simplemente en la cadena de conexión pones la dirección correcta del servidor (bien sea la IP o bien un nombre que se resuelva a la IP del servidor) y no hay que hacer ningún cambio más, el programa es idéntico a como sería si el servidor fuese local o estuviese directamente conectado a la misma red.

    Entonces el problema se reduce a infraestructura de red y administración de sistemas. Hay que conseguir que esa dirección del servidor sea accesible desde los puestos. Aquí habría que conocer la topología de tu red. Si el servidor está en una red local que se conecta a Internet a través de un router que hace NAT, entonces habrá que configurar el router para que haga NAT-inverso desde su dirección pública a la dirección privada del servidor (y la dirección que hay que poner en la cadena de conexión de tu programa es la pública, no la privada). Por desgracia, esto se hace de manera distinta en cada marca y modelo de router, así que no tendrás más remedio que leer el manual del tuyo.

    Además de eso, hay que abrir el paso en todos los firewall que haya entre medias de la red pública y tu servidor, además de abrirlo en el firewall de Windows en el servidor si es que lo tienes activado (y sí deberías tenerlo activado salvo que tu infraestructura de red ya provea otro firewall anterior).

    En SQL Server hay que habilitar las conexiones remotas (desde el SQL Server Configuration Manager, habilitar TCP). Y hay que habilitar la autenticación mixta (desde la pestaña de seguridad en las propiedades de la instancia en SSMS), y crear cuentas para la conexión de los equipos externos, y poner en la cadena de conexión esas credenciales. Y darles a esas cuentas los mínimos permisos que necesiten para acceder a la base de datos que vayas a manejar desde el programa.

    • Propuesto como respuesta Pablo Rubio miércoles, 12 de septiembre de 2018 16:32
    • Marcado como respuesta Pablo Rubio miércoles, 12 de septiembre de 2018 18:34
    • Desmarcado como respuesta Willian61x jueves, 13 de septiembre de 2018 3:39
    • Marcado como respuesta Pablo Rubio miércoles, 19 de septiembre de 2018 21:09
    miércoles, 12 de septiembre de 2018 6:13
  • Buenas noches sinceramente no entendí nada y me quede peor de donde estaba hay un vídeo o algun manual para guiarme 


    Willian61x


    • Editado Willian61x jueves, 13 de septiembre de 2018 3:39
    jueves, 13 de septiembre de 2018 3:38
  • El resumen de todo lo anterior es "El programador no puede hacer nada para resolverlo. No hay que cambiar el programa. Todo el trabajo para acceder a la base de datos desde los equipos en la Internet lo tiene que hacer un experto administrador de sistemas, el cuál tiene que saber lo que hace y conocer su topología de red y sus enrutadores porque no es estándar y se hace de forma distinta en cada instalación."

    jueves, 13 de septiembre de 2018 5:55
  • buenas noches logre hacer la conexión pero no me conecta en visual estudio  esta es la conexion que hice 

    cnn = New SqlConnection("Data Source = 181.39.10.43:1433; Initial Catalog =Wrs; User ID = sa;  Password = 65555")


    Willian61x

    martes, 18 de septiembre de 2018 5:16
  • Sí, es correcto, la cadena tiene que tener aproximadamente ese aspecto. Ojo, la mayor parte de los routers no te dejan acceder a la dirección externa cuando accedes desde el interior de la red. Entonces, si estás trabajando con Visual Studio dentro de la red, tienes que escribir la IP interna y no la externa. Y cuando publiques el programa para que lo usen los usuarios externos, entonces tienen que poner la IP externa, como la que tienes en la cadena del ejemplo.

    Ojo, cualquiera (no solo tus usuarios) puede conectarse por esta vía. La dirección y la password tarde o temprano se acabarán "filtrando" porque están embebidas en todos tus programas y los programas están en manos de los usuarios. Por lo tanto, es peligrosísimo que uses una cuenta con privilegios elevados, tal como la del "sa". Usa una cuenta con privilegios mínimos, que no tenga acceso a ninguna información "delicada", y preferiblemente que sea distinta para cada usuario, de forma que si se "filtra" sepas quién es el culpable para exigir responsabilidades, además de poder deshabilitarlo individualmente sin afectar a los demás.

    martes, 18 de septiembre de 2018 6:28
  • el programa es para uso familiar en dos locales pero no se conecta con esa cadena gracias voy a crear un usuario con otros privilegios.


    Willian61x

    martes, 18 de septiembre de 2018 15:37