Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Estas en el tema de Programar duplicado: Access > SQL Server (local) > SQL Server (externo) en el foro de SQL Server en Foros del Web. Buenos días: Tengo que programar una actualización diaria de los pedidos para mostrarla a los clientes en la página web. Los pedidos están registrados en ...
  #1 (permalink)  
Antiguo 30/07/2009, 01:35
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Buenos días:

Tengo que programar una actualización diaria de los pedidos para mostrarla a los clientes en la página web. Los pedidos están registrados en un tabla de MS Access en local y se ha de hacer un duplicado (de los últimos 6 meses) en un servidor SQL Server de un hosting externo. Para ello voy a utilizar como puente un servidor MS SQL Server 2005 Express local que se encargue de periódicamente sacar el listado de pedidos de Access y compararlo con el que hay en el servidor externo SQL Server.

1º He registrado mi archivo MDB en el servidor local (desde MS SQL Server Management Studio Express):
Código SQL:
Ver original
  1. sp_addlinkedserver 'PedidosMSAccess', 'Access', 'Microsoft.Jet.OLEDB.4.0',
  2.    'D:\Servidor\BasesDatos\pedidos.mdb'
2º La consulta de los últimos 6 meses de pedidos es:
Código SQL:
Ver original
  1. SELECT p.*
  2. FROM PedidosMSAccess...tblPedidos AS p
  3. WHERE CAST(p.FechaRegistro AS DATETIME) >= DATEADD("m", -6, GETDATE())
  4. AND p.Estado <> 'A'
3º El resultado de esta consulta lo tengo que compara con la tabla tblPedidos que está en el servidor SQL Server externo (ya registrado en SQL Server Management Studio Express), es decir, añadir los nuevos pedidos, eliminar los antiguos, y actualizar los que hayan sido modificados. Las tablas de Access y SQL Server externo son idénticas.

¿Cómo realizo este último paso?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 30/07/2009, 01:41
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Por cierto, eliminar todos los registros de la tabla externa y meter de nuevo todos los de la consulta actual no puedo hacerlo, ya que me satura el registro de transacciones y se me puede bloquear la base de datos durante unas horas (limitaciones del hosting).

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 30/07/2009, 09:11
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

http://www.exforsys.com/tutorials/sq...plication.html
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 30/07/2009, 09:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Deja de utlizar CAST para tus datos fecha y en lo posible, no utilizar <> para realizar comparaciones.
  #5 (permalink)  
Antiguo 31/07/2009, 00:09
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Gracias flaviovich, le echaré un vistazo.

Gracias a tí también iislas. ¿Qué es mejor. CONVERT?¿Que hay de malo en "<>"?

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #6 (permalink)  
Antiguo 31/07/2009, 01:08
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

La primera en la frente. Voy a Réplica > Suscripciones locales > Nueva suscripción y:

Publicador: SERVIDOR\SQL2005EXPRESS
Bases de datos y publicaciones:
"No hay publicaciones a las que pueda suscribirse, bien porque este servidor no tiene publicaciones o bien porque no tiene suficientes privilegios para tener acceso a las publicaciones."

Claro, primero tendré que crear una publicación: Réplica > Publicaciones locales ??? No tengo esa carpeta ¿Será porque es Express? Pues sí, efectivamente, Express no permite publicaciones, sólo suscripciones.

¿Puedo hacerlo entonces como suscripción al servidor externo?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!

Última edición por Bravenap; 31/07/2009 a las 01:15
  #7 (permalink)  
Antiguo 31/07/2009, 07:55
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Si tu servidor puente no puede ser de otra edicion que Express, entonces no se podra.
Podrias usar un DTS, y hacer el mismo trabajo paso a paso.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 31/07/2009, 10:13
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Cita:
Iniciado por Bravenap Ver Mensaje
Gracias a tí también iislas. ¿Qué es mejor. CONVERT?¿Que hay de malo en "<>"?Un saludo.
Interesante Estaremos a la expectativa por la explicación de esta afirmación...
__________________
..:: moNTeZIon ::..
  #9 (permalink)  
Antiguo 31/07/2009, 10:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

CAST y CONVERT, aplicados sobre campos fecha, hacen que NO SE UTILICEN los indices creados en estas, por tanto, la busqueda es SECUENCIAL, si se tienen 100 registros, no hay problema, pero si hablamos de miles o millones de registros, entonces la cosa se complica.

33. Los operadores de la cláusula WHERE afectan la velocidad en la resolución de una consulta. Se debe usar mas el operador “=” y usar menos el operador “<>” (en lo posible). En su orden de rapidez son:
 =
 >, >=, <, <=
 LIKE
 <>

Creo que esto ya lo habia posteado
  #10 (permalink)  
Antiguo 31/07/2009, 10:25
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

iislas, te sales!
Gracias por compartir conocimiento.
Saludos.
__________________
..:: moNTeZIon ::..
  #11 (permalink)  
Antiguo 31/07/2009, 10:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Programar duplicado: Access > SQL Server (local) > SQL Server (externo)

Your wellcome........
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:49.