Forums Últimos mensajes - Powered by IBM
 

Relica transaccional con suscripcion actualizable.

23/03/2010 - 15:16 por Andres Eliseo Soncini | Informe spam
Estimados Hombres/Mujeres de SQL Server,



He montado una infraestructura de dos servidores SQL Server con replicación.
La situación es la siguiente:



Tengo dos grupos de programadores. Grupo A, se dedica a programar en Server
A. Grupo B, se dedica a programar en Server B. Una aplicación de Grupo A,
necesita acceder a una bases de datos de Server B y actualizarla.



Ahora bien, me han solicitado, por unos problemas de los desarrollos del
grupo B, que la aplicación de grupo A, no acceda a datos en server B. Debe
leer todo desde su propio servidor, server A y actualizar allí.



Estudiando un poco las posibilidades, he dado con el escenario de crear una
publicación en server B con la posibilidad de que el servidor suscriptor
(server A) actualice algunos datos de las publicaciones. ¿Es la mejor
opción?



Yo ya tenía configurada una réplica transaccional pero el suscriptor no
puede actualizar las publicaciones. Hasta aquí, logro los objetivos hasta la
mitad. El grupo A, puede leer los datos del server B, en su propio servidor.
Los datos que yo quiera, pero no pueden actualizarle al grupo B.



Tratando de configurar esta publicación actualizable, ya mis instrucciones
de Update sobre las tablas de la base de datos de publicación fallan con
mensaje 216, "Column name or number of supplied values does not match table
definition". Asumo que eso debe tener que ver con el siguiente mensaje que
me da al configurar la publicación y definir los artículos:





Todos los artículos de una publicación que admite suscripciones
actualizables contienen una columna uniqueidentifier denominada
'MSrepl_tran_version' usada para mantener un seguimiento de los cambios
realizados en los datos replicados. SQL Server agrega esta columna a las
tablas publicadas que no la tienen.



Al agregar una columna nueva, ocurre lo siguiente:

» Las instrucciones INSERT sin listas de columnas dan error.

» Aumenta el tamaño de la tabla.



SQL Server agregará una columna uniqueidentifier a cada una de las tablas
siguientes cuando se crea la publicación.



[dbo].[op_cabe]





¿Debo modificar todas las instrucciones? ¿Mi solución es la mejor? ¿Existe
otra forma de hacerlo?





Saludos a todos y gracias de antemano.
 

Leer las respuestas

#1 Miguel Egea
26/03/2010 - 09:51 | Informe spam
La opción que has elegido está bien pero tiene esos impedimentos que dices.
A mi se me ocurre una alternativa de arquitectura si es SQL Server 2005
publica un procedimiento en el servidor B que actualize y deja que la
replicación te traiga los datos.

Saludos Cordiales
Miguel Egea
Solid Quality Mentos
http://www.portalsql.com

"Andres Eliseo Soncini" escribió en el
mensaje de noticias:eR#
Estimados Hombres/Mujeres de SQL Server,



He montado una infraestructura de dos servidores SQL Server con
replicación. La situación es la siguiente:



Tengo dos grupos de programadores. Grupo A, se dedica a programar en
Server A. Grupo B, se dedica a programar en Server B. Una aplicación de
Grupo A, necesita acceder a una bases de datos de Server B y actualizarla.



Ahora bien, me han solicitado, por unos problemas de los desarrollos del
grupo B, que la aplicación de grupo A, no acceda a datos en server B. Debe
leer todo desde su propio servidor, server A y actualizar allí.



Estudiando un poco las posibilidades, he dado con el escenario de crear
una publicación en server B con la posibilidad de que el servidor
suscriptor (server A) actualice algunos datos de las publicaciones. ¿Es la
mejor opción?



Yo ya tenía configurada una réplica transaccional pero el suscriptor no
puede actualizar las publicaciones. Hasta aquí, logro los objetivos hasta
la mitad. El grupo A, puede leer los datos del server B, en su propio
servidor. Los datos que yo quiera, pero no pueden actualizarle al grupo B.



Tratando de configurar esta publicación actualizable, ya mis instrucciones
de Update sobre las tablas de la base de datos de publicación fallan con
mensaje 216, "Column name or number of supplied values does not match
table definition". Asumo que eso debe tener que ver con el siguiente
mensaje que me da al configurar la publicación y definir los artículos:





Todos los artículos de una publicación que admite suscripciones
actualizables contienen una columna uniqueidentifier denominada
'MSrepl_tran_version' usada para mantener un seguimiento de los cambios
realizados en los datos replicados. SQL Server agrega esta columna a las
tablas publicadas que no la tienen.



Al agregar una columna nueva, ocurre lo siguiente:

» Las instrucciones INSERT sin listas de columnas dan error.

» Aumenta el tamaño de la tabla.



SQL Server agregará una columna uniqueidentifier a cada una de las tablas
siguientes cuando se crea la publicación.



[dbo].[op_cabe]





¿Debo modificar todas las instrucciones? ¿Mi solución es la mejor? ¿Existe
otra forma de hacerlo?





Saludos a todos y gracias de antemano.





Preguntas similares