Cómo eliminar el error 547 de SQL Server al eliminar un Plan de Mantenimiento
189 Visualizaciones
Lectura: 3 minutos
Si te interesa esta información, descargatela GRATIS
Descargar PDF GratisComo Administrador de Sistemas, cuando realizo actualizaciones y cambios de versión en servidores SQL Server, es habitual tener que cambiar el nombre del servidor antes de pasar a producción. Parece un paso sencillo, pero suelen surgir algunos problemas inesperados. Uno de ellos es que los Planes de Mantenimiento de SQL Server, creados antes del cambio de nombre. Siguen ahí, pero ahora están asociados al nombre antiguo del servidor.
El problema viene cuando intento eliminarlos manualmente. En lugar de simplemente desaparecer, SQL Server devuelve el error 547, lo que indica que hay restricciones de integridad referencial que impiden su eliminación. Esto puede volverse frustrante, especialmente si necesito limpiar estos planes antes de continuar con la configuración del nuevo entorno.
Afortunadamente, hay una solución mediante comandos SQL que permite eliminar estos planes de mantenimiento de forma segura y sin complicaciones.
Concretamente, el error que muestra SQL Server al tratar de eliminar el Plan desde Management -> Maintenance Plans es:
Exception has been thrown by the target of an invocation. (mscorlib)
Additional information:
A network-related or instance-specific error occurred while establishing a connecton to SQL Server.
The server was not found or was not accessible. Verify that the instance name is correct and
that SQL Server is configured to allow remote connectons.
(provider: Named Pipes Provider, error: 40 - Could not open a connectjon to SQL Server)
(Microsoft SQL Server, Error: 53). he network path was not found
Y si tratas de eliminar el Job desde SQL Server Agent -> Jobs:
Exception has been frrown by the target of an invocation, (mscorlib)
Additional information:
A network-related or instance-specific error occurred while establishing a connecton to SQL Server.
The server was not found or was not accessible. Verify that the instance name is
correct and that SQL Serveris configured to allow remote connectons.
(provider: Named Pipes Provider, error: 40 - Could not open a connectjon to SQL Server)
(Microsoft SQL Server, Error: 53).The network path was not found
Es importante saber donde almacena SQL Server toda la información de los Planes de Mantenimiento, la cual se encuentra distribuida en tres tablas, que están alojadas en la base de datos de sistema msdb:
- msdb.dbo.sysmaintplan_plans: Almacena la definición del Plan de Mantenimiento.
- msdb.dbo.sysmaintplan_subplans: Almacena los Subplanes que tiene el Plan de Mantenimiento.
- msdb.dbo.sysmaintplan_log: Almacena las diferentes ejecuciones y log de actividad.
Pasos para eliminar el error 547 de SQL Server
PASO1
Buscamos el id del plan que queremos eliminar con la consulta sobre la tabla msdb.dbo.sysmaintplan_plans, por medio de la consulta:
SELECT name, id FROM msdb.dbo.sysmaintplan_plans
PASO2
Buscamos los diferentes códigos de subplanes que puede tener la tarea con el campo subplan_id por medio de la consulta sobre la tabla msdb.dbo.sysmaintplan_subplans, por medio de la consulta:
SELECT subplan_id, subplan_name, plan_id FROM msdb.dbo.sysmaintplan_subplans WHERE plan_id="BC200775-FBE3-43E4-9FBF-9937E2589184"
PASO3
Eliminamos los registros de la tabla msdb.dbo.sysmaintplan_log para cada subplan_id:
DELETE FROM msdb.dbo.sysmaintplan_log WHERE subplan_id = "CBB183D4-B450-4DDE-8484-314FEEB63C35"
PASO4
Eliminamos los registros de la tabla msdb.dbo.sysmaintplan_subplans para cada subplan_id:
DELETE FROM msdb.dbo.sysmaintplan_subplans WHERE subplan_id = "CBB183D4-B450-4DDE-8484-314FEEB63C35"
PASO5
Eliminamos el registro de la tabla msdb.dbo.sysmaintplan_plans por medio del id:
DELETE FROM msdb.dbo.sysmaintplan_plans WHERE id = "C37A12BB-4D2E-4A82-B72D-1C3464CF538D"
PASO6
Y ahora, también podemos borrar las tareas desde SQL Server Agent -> Jobs