SQL Server - de BD remota a BD local

 
Vista:

de BD remota a BD local

Publicado por micki (4 intervenciones) el 30/05/2007 11:36:23
Hola amigos,
Tengo un pequeño cacao mental sobre SQL Server y espero que me podáis orientar un poquitín.
El tema es que tengo dos servidores SQL Server, uno remoto al que me conecto vía IP, y otro local en mi PC.
El servidor remoto contiene varias bases de datos, y el local contiene una.
En el servidor remoto existen una serie de stored procedures que devuelven todas las filas de una tabla concreta (dependiendo del stored procedure que se ejecute). No tengo acceso a las tablas directamente.
Tengo que hacer una replicación de los datos de esas tablas en el servidor local, una vez al día. Lo cual, si no me equivoco, lo puedo hacer programando trabajos en el Enterprise Manager y especificándoles la frecuencia necesaria.
Tengo en el servidor local unas tablas vacías ya creadas, listas para recibir los datos del servidor remoto.
Pero el problema es que no se exactamente qué proceso debo seguir. Me imagino que lo que tendría que hacer sería algo así:
[servidor remoto] -> ejecutar SP que devuelve datos de la tabla -> guardarlos en algún sitio -> [servidor local] -> abrir tabla correspondiente y guardar los datos secuencialmente.
¿Es posible lo que quiero hacer? ¿Tienen que estar los dos servidores interrelacionados de alguna forma? He probado creando un nuevo trabajo, de tipo Secuencia de Comandos VBScript, y le he incluido el siguiente código a ejecutar:

Set conn = Server.CreateObject( "ADODB.Connection" )
strConn1 = "Provider=sqloledb;Data Source=IP_BASE_REMOTA;Network Library=DBMSSOCN;Initial Catalog=BD_remota;User ID=USER1;Password=PASS1"
conn.Open strConn1

Set conn2 = Server.CreateObject( "ADODB.Connection" )
strConn2 = "Provider=sqloledb;Data Source=NOMBRE_SERVIDOR_LOCAL;Network Library=DBMSSOCN;Initial Catalog=BD_local;User ID=USER2;Password=PASS2"
conn2.Open strConn2

set rs = server.createobject("adodb.recordset")

rs.Open "Exec dbo.COFGet_Replic_Seccion", conn

sql_fillseccion = "INSERT INTO Seccion(Num_Seccion, Descripcion, Comentario, Foto) VALUES ('" & rs.Fields("Num_Seccion").Value & "', '" & rs.Fields("Descripcion").Value & "', '" & rs.Fields("Comentario").Value & "', '" & rs.Fields("Foto").Value & "')"

DO WHILE NOT rs.EOF
sql_fillseccion = "INSERT INTO Seccion(Num_Seccion, Descripcion, Comentario, Foto) VALUES ('" & rs.Fields("Num_Seccion").Value & "', '" & rs.Fields("Descripcion").Value & "', '" & rs.Fields("Comentario").Value & "', '" & rs.Fields("Foto").Value & "')"
conn2.Execute sql_fillseccion
rs.movenext
loop

rs.close
conn.Close
conn2.Close
Set rs = Nothing
Set conn = Nothing
Set conn2 = Nothing

Pero no funciona. ¿Voy bien encaminado?
Cualquier tipo de orientación será muy bienvenida, muchísimas gracias anticipadas!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:de BD remota a BD local

Publicado por jose miguel arroyo (1 intervención) el 01/06/2007 18:06:32
Estuve leyendo tu problema. Yo realice algo parecido a esto. Te esplico: Primero debe existir una vpn para unir los servidores, segundo unir los servidores en sql server local para que reconozca los demás servidores, tercero debes programar el envio a traves de dos formas posibles, replicación para lo cual tiene que indicar quien es el huesped y los subcriptores y el proceso se realiza automatico (lee la documentacion de replicacion), otra forma es programar paquetes en data tranformation server (DTS) que se ejecuten en una hora indicada (Lee la documentación de DTS). Todo esto realiza directamente en la base de datos de sql server sin tener que programar mas en una aplicación.

Saludos,

José Miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:de BD remota a BD local

Publicado por micki (4 intervenciones) el 06/06/2007 11:23:17
Muchísimas gracias por tu respuesta, José Miguel.

He estado probando cosas estos días y al final lo he conseguido, vinculando los servidores mediante los procedimientos sq_addlinkedserver y sp_addlinkedsrvlogin, y luego creando un procedimiento almacenado con todos los pasos necesarios, y programando un job.

No se si es la mejor manera, pero de momento funciona bastante bien :)

Gracias otra vez!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar