1 votos

Modificaciones de la tabla mientras se ejecuta la replicación de la base de datos (MS SQL 2008)

Estoy ejecutando SQL Server 2008 Std con una base de datos que está siendo publicada en una "Publicación Transaccional" a un solo suscriptor.

No podemos hacer ningún cambio en las tablas en el editor sin obtener el "no se puede modificar la tabla porque se publica para la replicación". Esto parece extraño porque los cambios del esquema (o scripts ejecutados para hacerlo) deberían ser empujados al suscriptor. Actualmente tenemos que abandonar todo el sistema de publicación para hacer cambios en las tablas.

¿Qué me falta? ¿Debe haber una forma de actualizar las tablas del editor?

Gracias.

1voto

frust242 Puntos 21

La modificación de la tabla que usted está tratando de hacer fue probablemente hecha en el diseñador gráfico de tablas en SSMS. La implementación de los cambios de la tabla a través del diseñador gráfico es pobre.

Cuando se guardan los cambios, SSMS se ejecuta y copia toda la tabla en una nueva tabla con el nuevo diseño incorporado, luego elimina la tabla "antigua" y renombra la nueva para reemplazarla.

Tenga en cuenta que el orden de las columnas tiene poca importancia para las tablas almacenadas en SQL Server, no hay necesidad de añadir nuevas columnas en el "medio" de una tabla, aparte de que puede parecer más bonito :=)

Como su tabla está en una replicación transaccional, SSMS no puede realizar la sentencia drop table en segundo plano y obtiene el mensaje de error que ha señalado.

Para realizar los cambios que desea (añadir o eliminar una columna) necesita realizar los comandos en T-SQL

ALTER TABLE dbo.Table ADD NewCol int NULL;
ALTER TABLE dbo.Table DROP COLUMN NewCol;

Tenga en cuenta que la sintaxis de los comandos es incongruente (¡gracias MS!). La adición de una columna no necesita/permite especificar la palabra clave COLUMNA, donde la caída la requiere.

Siempre que su replicación esté correctamente configurada para replicar los cambios de esquema, estos comandos funcionarán y se propagarán al suscriptor.

Los cambios en una tabla se pueden hacer de esta manera, con la excepción de cambiar la clave primaria. La clave primaria es necesaria para que la replicación transaccional funcione y no se puede cambiar. Tendrías que eliminar el artículo de la replicación si quisieras cambiar estas columnas.

Espero que eso ayude.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: