none
Sincronizar tabla idéntica en otro servidor RRS feed

  • Pregunta

  • Estimados colegas:

    Buenos días.

    Estoy intentando mantener sincronizada una tabla idéntica en otro servidor. No encuentro problema en hacerlo con un trigger, excepto que el nombre del servidor lo tengo almacenado en una variable (ya que dicho nombre puede cambiar). Resulta que al intentar ejecutar un script desde un trigger desde la tabla origen, no reconoce, por ejemplo, la tabla "Deleted". Seguramente es un problema de contexto y no encuentro la forma de resolverlo. ¿Alguna idea o alternativa?

    Muchas gracias por su tiempo.

    Un cordial saludo.

     

    Gabriel Dameñov

    martes, 2 de agosto de 2011 14:53

Respuestas

Todas las respuestas

  • No creo que esa sea la mejor forma de conseguir lo que buscas. Dependiendo de los requisitos de esa sincronización tienes varias alternativas, como puede ser por ejemplo la replicación transaccional.
    martes, 2 de agosto de 2011 15:11
  • Como dice Carlos, existen varias alternativas más especializadas para replicar datos como ser:

    Reflejos de bases de datos:

    http://msdn.microsoft.com/es-es/library/ms189852.aspx

    Replicaciones de bases de datos (creo que en tu caso sería un replicación transaccional):

    http://msdn.microsoft.com/es-es/library/ms151176.aspx

    También podrías eventualmente usar 

    Trasvase de registros:

    http://msdn.microsoft.com/es-es/library/ms187103.aspx

     

    Dicho esto, si insistes en hacer triggers y no te convence implementar nuestras sugerencias tendrías que pasarnos tu trigger y de ahí, podemos ayudarte.

     


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    martes, 2 de agosto de 2011 17:47
  • Dani, ni Mirroring ni Log Shipping le servirían como solución a Gabriel, ya que replicarían toda la base de datos, y él lo que necesita es una única tabla. En ese sentido, la replicación transaccional es la opción más viable
    miércoles, 3 de agosto de 2011 8:07
  • Estoy 100% de acuerdo con los compañeros, que lo más sensato sería una replicación transaccional, no obstante lo que tu dices se puede hacer y esta es una demostración. Ojo, lo pongo solo porque no creas que es una limitación, yo no lo usaría, y montaría replicación transaccional o un paquete de integration services que sincronizara las tablas cada cierto tiempo.
    create table t (id int,demo varchar(10))
    		go
    		create trigger tr_t on t for insert 
    		as
    		begin
    		 select * into #a from inserted
    		 exec('select * from #a')
    		end
    		go
    		insert into t values (1,'hola')
    


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    miércoles, 3 de agosto de 2011 10:07
    Moderador
  • Cómo sincronizar dos tablas usando SQL Server Integration Services (SSIS

    I -> http://blogs.msdn.com/b/esecuelesinfronteras/archive/2011/03/01/c-243-mo-sincronizar-dos-tablas-usando-sql-server-integration-services-ssis-parte-i-de-ii.aspx

    II -> http://blogs.msdn.com/b/esecuelesinfronteras/archive/2011/03/11/c-243-mo-sincronizar-dos-tablas-usando-sql-server-integration-services-ssis-parte-ii-de-ii.aspx



     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    miércoles, 3 de agosto de 2011 10:53