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!!
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
0