Asp y rds

Hola tengo entendido que para hacer una conexión a una base de datos situada en un servidor diferente al que se aloja la página web se tiene que utilizar rds, ¿si es así como se aria la conexión por ejemplo a una base de datos access o sqlserver?, ¿Si no se utiliza el rds como podría hacerse?

5 respuestas

Respuesta
1
Actualmente rds esta desfasado, la gente suele utilizar ado (es más seguro y proporciona más ventajas), para obtener información sobre ado, rds mira en la página de microsoft (www.microsoft.com/data).
Para conectar a una base de datos en remoto, te doy una dirección donde vienen todas los tipos de conexiones y de bases de datos que se pueden hacer con ado:
http://www.able-consulting.com/ADO_Conn.htm
Respuesta
1
Si es un SQL Server no es necesario RDS. El único requisito en ese caso es que el servidor tenga abierto el puerto 1433 (se puede utilizar cualquier otro siempre y cuando se indique en la cadena de conexión).
El RDS forma parte de ADO. Aquí no tengo tiempo ni espacio suficiente para explicar su funcionamiento. Sólo te puedo introducir que se emplea el objeto DataFactory (si mal no recuerdo), que es el que establece la conexión. Luego trabajas con Recordsets normales y corrientes. El servidor debe tener instaladas las extensiones de RDS (por defecto suelen venir), y la comunicación se establece por el puerto 80 (HTTP). Cuando haces la petición de datos, el recordset entero viaja del origen de datos al solicitante. Puedes hacer los cambios que quieras en el recordset, y luego enviarlos de nuevo al servidor de datos (creo que era el método SubmitChanges). Yo lo he utilizado para conectar un grid de una página en HTML con datos en una MDB en el servidor. Así, a grandes trazos:
Set ds = server.createobject(RDS.DataSpace")
Set df = ds.CreateObject("RDSServer.DataFactory", "http://miservidorweb/")
Set rs = df.Query("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("misdatos.mdb"),<consultaSQL>)
En "rs" (recordset) tendrás los datos.
Para devolver los cambios al servidor:
df.submitchanges "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("misdatos.mdb"),rs
Primero que nada gracias por responder.
He hecho millones de pruebas con ado, y no lo he conseguido, por eso había recurrido a rds, aunque he oído que esta ya obsoleto y todo lo que se puede hacer con rds lo mejora ado,¿es así?.
De todas formas mi problema en concreto es el siguiente:
Tengo un ordenador (ip de mi red local 192.168.0.1)con win2000 server y sqlserver, conectado a internet por un router adsl y varios ordenadores en red, jo estoy trabajando en el '192.168.0.3', que es el que tiene iis instalado (lo instale en este y no en el server precisamente para hacer estas pruebas de acceso remoto), utilizo la siguiente cadena de conexión en asp para conectar a la base de datos:
"PROVIDER=SQLOLEDB;DATA SOURCE=192.168.0.1;UID=sa;PWD=;DATABASE=pubs"
Y todo va bien, pero esto no me vale ya que yo lo que quiero es acceder desde un ordenador fuera de mi red local, osea desde internet.por eso hago la prueba de cambiar en la cadena de conexión la ip local (192.168.0.1) del servidor sql por por la ip fija del router que justamente esta conectado directamente al server(192.168.0.1).Es mucho suponer que funcionara y efectivamente no funciona,¿en qué estoy fallando?,¿O no se puede hacer esto?. Es un poco lioso, ya lo se, pero en definitiva lo que quiero es alojar una pag web (en un servidor web gratuito) y desde esa página acceder a una base de datos que este en un equipo con una ip fija.
De la manera que pretendes hacerlo debería funcionar, siempre y cuando abras el puerto 1433 en el firewall, y el servidor disponga de una IP externa (no valen las 192.168.x.x). Creo que SQLOLEDB utiliza ese puerto para acceder a un servidor remoto.
Gracias, haré más pruebas, supongo que sera porque el administrador tiene bloqueado el equipo con cont y passw, esperare a que venga y se lo comentare.
Saludos
Respuesta
1
Las conexiones a bases de datos se hacen a través del objeto ADO Connection que debe crearse en la página así:
Dim oConn ' Declaro la variable
set oConn=Server.CreateObject("ADODB.Connection")
Tienes que hacer una conexión a través de DSN. Utilizala para acceder a la base de datos en el otro equipo.
Gracias por responder.
He conseguido conectar con ado a una base de datos que esta en un servidor de mi intranet, pero no consigo hacerlo para una que esta en un servidor externo a mi intranet, ¿se puede?,¿Me hace falta algo más que la autentificación de sql server?, me refiero a la contraseña y pwd de windows 2000 qués es al que me intento conectar. Osea si le digo que el servidor sql esta en una ip local si que funciona, pero si le digo que esta en un ip fija externa (pero en realidad es el mismo equipo de la intranet, puesto que es ese el que esta conectado directamente al router y tiene asignada tanto la ip local de la intranet 192.168.0.1 como la ip fija externa que me da el router adsl) no me funciona,¿puede ser debido a lo que te he dicho antes de autentificación de usuario de win2000)?
Priermo tienes que crear la conexión Dsn desde el servidor web al servidor de base de datso y probar a ver si funciona.
Si utilizas sql server, solo tienes que meter la ruta de acceso a la base de datos y el inicio de session, con eso ya vale.
Justamente lo que no puedo hacer es la conexión desde el servidor web hasta la base de datos, ja que la bdatos esta en un equipo fuera de mi intranet. Bueno desistiré y lo alojare todo en el mismo servidor. Gracias por responder. Saludos
Respuesta
1
La conexión con una Base de Datos que se encuentra en un servidor distinto al que aloja las páginas web, es como cualquier otra conexión. Con access o SQL Server simplemente en el servidor web tienes que crear una conexión ODBC con la base de datos que quieras emplear (al crear el ODBC te pedirá la localización del servidor, la base de datos concreta con la que quieres conectar, el usuario y password). De todos modos lo que si debe existir es una rápida conexión física entre ambos servidores, para evitar que el servidor web se quede "esperando" demasiado tiempo.
Gracias por responder.
He conseguido nonectar a una base de datos que esta en un servidor de mi intranet, pero no consigo hacerlo para una que esta en un servidor externo a mi intranet, ¿se puede?,¿Me hace falta algo más que la autentificación de sql server?, me refiero a la contraseña y pwd de windows 2000 qués es al que me intento conectar. Osea si le digo que el servidor sql esta en una ip local si que funciona, pero si le digo que esta en un ip fija externa (pero en realidad es el mismo equipo de la intranet, puesto que es ese el que esta conectado directamente al router y tiene asignada tanto la ip local de la intranet 192.168.0.1 como la ip fija externa que me da el router adsl) no me funciona,¿puede ser debido a lo que te he dicho antes de autentificación de usuario de win2000)?
Lo que me comentas de conectar con un servidor no perteneciente a tu red, sinceramente nunca me he visto en el caso (aparte mucho me temo que si lo consigues, tendrás serios problemas de Timeout en tus páginas). Por lo que se, al tratarse de redes distintas, para poder acceder a los recursos de la otra red (como por ejemplo la BBDD que comentas), debería existir una relación de confianza (es un tema de administración de redes NT) entre ambas redes, a fin de que tu usuario tuviese acceso a dicho recurso en la otra red. Si no existe dicha relación, mucho me temo que no podrás conectar con el servidor.
En cualquier caso, como te digo nunca me había planteado este tema, pero por lo que me comentan algunos compañeros el tema va en esa dirección.
Siento no poder decirte mucho más. Una idea sería que preguntases también a alguien experto en administración de redes, por el tema de permisos y demás.
Respuesta
1
Mil disculpas por la demora, tal vez ya solucionaste tu problema, sin embargo para hacer lo que quieres necesitas la dirección P del servidor de Bases de datos o su nombre en Internet, además de eso necesitas tener habilitado el puesto 1433, lo demás es simple.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas