miércoles, 1 de julio de 2015

Eliminar la Replicación en una Base de Datos de SQL Server

Una tarea que podemos necesitar hacer ocasionalmente en entornos de Replicación basados en SQL Server, es eliminar la Replicación de una Base de Datos, una tarea que podemos necesitar hacer tanto en los Subscriptores (quizás este sea el caso más común) como en el Publicador. De este modo, realizaremos una limpieza de manera ordenada sobre dicha Base de Datos, esto es, eliminar todos los objetos de Base de Datos relacionados con la Réplica, incluyendo la información de las tablas de sistema de la Réplica. Para ello, deberemos seguir un procedimiento en particular.

Hay diferentes escenarios en los que necesitaremos eliminar la Replicación de una Base de Datos de SQL Server, como por ejemplo, si necesitamos sustituir un Subscriptor (la máquina) por cualquier motivo (ej: sustitución del Hardware) en una Réplica de Mezcla de SQL Server. Centrándonos en este caso particular, algunos DBAs se limitan a eliminar la Subscripción en el Publicador, o quizás la Subscripción y Publicación del Publicador. Sin embargo, esto no sería suficiente. Los pasos que deberíamos seguir son al menos los siguientes como regla general (ojo, puede haber excepciones):
  • Eliminar la Subscripción en el Publicador. Puede hacerse fácilmente desde SQL Server Management Studio. Si tenemos una Publicación con una única Subscripción, podriamos eliminar ambas cosas: Publicación y Subscripción.
  • Eliminar la Subscripción en el Subscriptor. Puede hacerse fácilmente desde SQL Server Management Studio.
  • Eliminar totalmente la Replicación del Subscriptor, ejecutando sp_removedbreplication sobre la Base de Datos del Subscriptor.
De este modo, dejaremos el entorno limpio. Si posteriormente necesitamos volver a crear la Subscripción, no deberíamos tener ningún problema.
La importancia de eliminar totalmente la Replicación, ejecutando sp_removedbreplication, es porque nos garantizamos eliminar todos los objetos de la Réplica, como es el caso de los Triggers, Vistas, etc., lo cual incluye también eliminar las propias tablas del sistema de la Réplica. Este último punto es quizás el más importante, ya que las tablas del sistema de la Réplica almacenan mucha información (metadatos) de la Réplica, y si volvemos a configurar la Replicación manteniendo dichas tablas y sin haber eliminado la Subscripción del Subscriptor, podríamos replicar dichos metadatos antiguos, y tener problemas adicionales. Su ejecución es muy sencilla.
sp_removedbreplication
Podemos consultar la información de los BOL si queremos profundizar más en este tema:

No hay comentarios:

Publicar un comentario