.png)
Estoy ejecutando SQL Server 2008 Std con una base de datos que se publica en una "Publicación transaccional" para un único suscriptor.
No podemos realizar ningún cambio en las tablas del editor sin que aparezca el mensaje "no se puede modificar la tabla porque está publicada para replicación". Esto parece extraño porque los cambios de esquema (o los scripts ejecutados para hacer esto) deben enviarse al suscriptor. Actualmente tenemos que eliminar todo el sistema de publicación para realizar cambios en las tablas.
¿Qué me estoy perdiendo? ¿Debe haber una manera de actualizar las tablas del editor?
¡gracias!
Respuesta1
La modificación de la tabla que está intentando realizar probablemente se realizó en el diseñador gráfico de tablas en SSMS. La implementación de cambios de tablas a través del diseñador gráfico es deficiente.
Cuando guarda los cambios, SSMS se ejecuta y copia la tabla completa en una nueva tabla con el nuevo diseño incorporado, luego descarta la tabla "antigua" y cambia el nombre de la nueva para reemplazarla.
Tenga en cuenta que el orden de las columnas tiene pocas consecuencias para las tablas almacenadas en SQL Server; no es necesario agregar nuevas columnas en el "medio" de una tabla, salvo que se vea mejor :=)
Como su tabla está en una replicación transaccional, SSMS no puede realizar la declaración de eliminación de la tabla en segundo plano y recibe el mensaje de error que anotó.
Para realizar los cambios que desee (agregar o eliminar una columna), debe 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 del comando es inconsistente (¡gracias MS!). Agregar una columna no necesita/permite que se especifique la palabra clave COLUMNA, donde eliminarla lo requiere.
Siempre que su replicación esté configurada correctamente para replicar los cambios de esquema, estos comandos funcionarán y se propagarán al suscriptor.
Se pueden realizar cambios en una tabla de esta manera, con la excepción de cambiar la clave principal. La PK es necesaria para que funcione la replicación transaccional y no se puede cambiar. Debería eliminar el artículo de la replicación si desea cambiar estas columnas.
Espero que ayude.