Conectarse a Servidor Sql Server a través de Internet

Hace mucho tiempo que no posteo en este blog, es en parte falta de tiempo y un poco de preferencia hacia otros blogs. Pero aquí voy a retomar el hilo a este blog.

Me ha llegado una consulta, sin pecar por ego, también he recibido otras pero no he podido responderlas y pido disculpas, fué por falta de tiempo y preferencia. La consulta es de William Vidal:

Verás quiero acceder a una base de datos de SQL de manera remota para esto tengo una pc con Ip pública y Windows xp sp2, ahí le he instalado SQL y he creado una base de datos,

Hacer esta aplicación Cliente-Servidor me ha funcionado pero de manera local en una red LAN, pero cuando intento hacía la máquina con ip pública no logro hacerlo, estoy investigando muchas cosas que podrían ser (puertos, instalación de sql), pero quería ver si si me puedes ayudar con algunas cosas primero: mi SO no es SERVER cono Windows server o windows nt.

quisiera preguntarte si para hacer tal cosa necesito de ley que el sistema operativo de la máquina a la que voy a acceder tiene que ser Server.

La cadena con la que me conecto a SQL va más o menos así:

Set cn = New ADODB.Connection

With cn

.Provider = "MSDASQL;DRIVER={SQL Server};SERVER=" & strServer & ";trusted_connection=no;user id= " & strUID & ";password=" & strPWD & " ;database=" & strDatabase & ";"

.Open
La consulta es muy común, voy a tratar de contestar las dudas que tiene William:

1. ¿Es necesario que el sistema operativo sea tipo Server?

No. Es preferible, pero no es necesario. Se puede hacer con Windows XP Profesional.


2. ¿Cuál es la cadena de conexión para este caso?
Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
Es importante indicar la librería a utilizar, en este caso DBMSSOCN.

3.¿Hay que abrir algún puerto en el router?

Sí, hay que hacer un forwarding del puerto 1433 en el router, el puerto por defecto de Sql Server, hacia la IP local del servidor Sql Server.

Espero sea de ayuda para William y a otros.

Fuente:
CONNECTION STRINGS

Autor: Carlos Mayanga

10 comentarios:

William dijo...

Hola Carlos que tal, soy william nuevamente. Gracias por lo explicado.
Verás empecé a probar lo que me indicaste, a diferencia como ya sabes, la pc con ip pública no usa router, solo se conecta directamente del modem, bueno para probar la conexión he desabilitado el firewall según investigué al hacer esto se habilitan todos lo puertos y hay que tener presente q ciertos antivirus como el kaspersky también tienen un firewall, en fin he desactivado los dos solo para probar que la conexión de resultado luego de esto pues, estos dos dan opciones para habilitar puertos y permitir programas así que los volveré a habilitar o se comprará el router de ser necesario.

Sin embargo me he encontrado con un error que no me lo esperaba mira al usar la cadena de conexión que me recomendaste quedó así:

Public conec As ADODB.Connection

Sub abrir()

Set conec = New ADODB.Connection

conec.Provider= "Provider=sqloledb;Data Source=192.168.1.2,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=xxxxxxxx;"

conec.Open
End Sub

tambien he agregado una referencia al proyecto: Microsoft ActiveX Data Objects 2.7 library

sin embargo cuando ejecuto esa cadena, para probar me sale un error que no es de conexión me dice:
Error'3706' No se encontró el proveedor especificado.Es posible que no esté instalado correctamente.

Lo he probado en otra máquina y me dice lo mismo, quisiera ver si me puedes ayudar con esto, he estado investigando sobre este error, pero de pronto tú tienes más experiencia con esto.

Tal ves no estoy agregando alguna referencia, o algo en el código, por eso te escribo todo el código tal cual esta y la referencian que he agregado, o Quizas tengo que volver a instalar algo.

En fin te agradecería muchisimo si me pudieras ayudarme pronto.

Ah, una cosa más te quería preguntar, mira cuando supere este problema ¿Puedo probar la conexión en dos pc que se encuentran en red a traves de un cable haciendo una cliente y otra Servidor o solo funciona remotamente (no creo)?.

Me despido, quedo a la espera de tu respuesta, cualquier aporte me servirá de mucho, yo estoy tambiém insvestigando sobre el tema.

saludos cordiales,

Ikanus dijo...

Hola William, prueba instalando el MDAC 2.7 y MDAC 2.8 en la PC cliente, que puedes bajarlo de la web de Microsoft.

Respecto a la conexión de PC a PC, nunca he probado una conexión Sql Server en ese caso, me gustaría que me cuentes tu experiencia.

Si conectas una PC en la misma red, también debería funcionar ya que en todo caso se está apuntando a una IP, que puede ser una pública o una privada.

Saludos,

William dijo...

Que tal nuevamente, mira he instalado el MDAC 2.7, y se instaló bien, luego probé y nada entonces me dispuse a instalar el MDAC 2.8 pero da conflicto según investigué eso sale cuando en el Sistema operativo ya esta instalado el MDAC 2.81 como es una versión anterior no permite hacerlo, estoy intentado conserguir el MDAC 2.81 pero no lo he podido, es decir no hay instalador de este creo que lo puedes hacer solo directamente desde la páguina de Microsoft, en fin mañana pienso hacerlo pero si no es por ahí, la verdad no sé como hacer, si tienes algún consejo que me pueda ayudar sería bueno.....

Quisier ver si porfa le puedes hechar un ojo a la cadena que te pasé a ver si te fijas en algún error que pueda yo tener ahí.

O si se te ocurre alguna idea como para poder probar que el servidor esta bien configurado y a la escucha, para ir descartando posibilidades, he visto en sql que hay como vincular o hacer servidores remotos..por ejemplo o una aplicación que determine si el puerto está abierto si el servidor está visible...en fin disculpa si te saturo la verdad estoy a full con esto, yo voy ha seguir investigando, si por favor puedes apoyarme con algo será bienvenido.

Las conexones de pc a pc realmente son muy sencillas con el código que te puse en el primer msj me funciona, claro que me gustaría ver si soporta tres pc pero creo que sí. Al instalar SQL el inicio de sesion lo determiné como un usuario windows que es administraor obviamente, pero la autentificación la e puesto de modo mixto con el usuario sa una contraseña, y así de manera LAN conectadas por un cable solo Basta con poner la ip de la pc y el nombre de usuario y contraseña con que pusiste en la autenticación y listo.

No se que más me puedas recomendar si de pronto se me está escapando algo por ahí.

La verdad el día de hoy he hecho unas pruebas con Winsock por si en ultimas instancias no lo logro, hacer una aplicación servidor que contenga ciertos métodos que serán los que hagan el trabajo con BD SQL ya que ahí será de forma local y eso si sale, y otra aplicación cliente que por medio del winscok le pase ciertos parámetros que determinen que se va ha ejecutar (para conectarce algunos al mismo tiempo tendría que hacerlo con instancias de este control), es más o menos como cuando se programan servicios con asp pero en teoria....pero bueno la verdad no quiero hacer eso....la idea es hacerlo de la manera original...

esperando cualquier comentario me despido.
gracias por tu comentario, y hasta la próxima...ojalá y puedas ayudarme...

jose dijo...

dime como conectarme a sql 2005,si yo tengo wimdows xp2000

Iva dijo...

tienes que ir al sql server configuration manager y en la configuracion de red habilitar la conexion remota tcp/ip

Iva dijo...

Habilitamos conexiones remotas para SQL Server 2005 Express o SQL Server 2005 Developer Edition
Debemos habilitar conexiones remotas de cada instancia de SQL Server 2005 que deseamos conectar desde un equipo remoto. Para ello, sigamos estos pasos:
1. Hacemos clic en Inicio, seleccionamos Programas, seleccionamos Microsoft SQL Server 2005, seleccionamos Configuration Tools y a continuación, hacemos clic en SQL Server Surface Area Configuration.
2. En la página SQL Server 2005 Surface Area Configuration, hacemos clic en Surface Area Configuration for Services and Connections.
3. En la página Surface Area Configuration for Services and Connections, expandimos motor de base de datos, hacemos clic en Remote Connections, hacemos clic en Local and remote connections, hacemos clic en el protocolo apropiado habilitar para su entorno y a continuación, hacemos clic en Aplicar.
4. En la página Surface Area Configuration for Services and Connections, expandimos motor de base de datos, hacemos clic en servicio, hacemos clic en Detener, esperamos hasta que el MSSQLSERVER atienda stop y a continuación, hacemos clic en Iniciar para reiniciar el servicio MSSQLSERVER.

Ikanus dijo...

Gracias Iva por las respuestad y la ayuda prestada a William, con él que me disculpo, no he tenido contacto con este blog en mucho tiempo.

Saludos,

Marco dijo...

Disculpen.

Quisiera ver si me pueden ayudar.
Tengo un programa que esta en Visual Basic pero quieren que este programa se pueda acceder a través de internet.

Que pueda correr el programa a través de Internet en lugar de que yo se los instale de computadora en computadora.

¿Qué puedo hacer o cómo le puedo hacer?

Gracias

Gabriel dijo...

No creo que sea una muy buena idea exponer una base de datos a internet aunque puedes usar en la pc que te quieres conectar el sqlclient y configurar una conexion remota sin meterle tanto codigo a tu programa

Gabriel dijo...

No creo que sea una muy buena idea exponer una base de datos a internet aunque puedes usar en la pc que te quieres conectar el sqlclient y configurar una conexion remota sin meterle tanto codigo a tu programa