Estoy tratando de exportar un plan de mantenimiento simple desde una instancia de SQL Server.
Quiero verificar la exportación al control de origen y aplicar el plan de mantenimiento exportado a instancias funcionalmente idénticas.
StackOverflow y SQL Server Newbie recomiendan usar Integration Services para exportar el plan de mantenimiento.
Cuando intento conectarme a Integration Services en el destino Exportar, recibo el siguiente error:
La conexión al servicio de Integration Services en la computadora "WEBSERVER" falló con el siguiente error: El servicio especificado no existe como un servicio instalado.
Elegimos deshabilitar los Servicios de integración en WEBSERVER porque usamos este cuadro solo para servir datos a aplicaciones de consumo. Todos los datos en WEBSERVER se replican desde una instancia de back-end. Integration Services se utiliza mucho para procesar datos en la instancia de back-end.
¿Existe una forma documentada de exportar un plan de mantenimiento sin usar Integration Services? ¿Microsoft lo admite?
fuente
dtutil
, lo cual se construye de forma redonda, básicamente está desactivado de lo contrario, aunque esté presente. Algunas versiones de SQL Server (como Web Edition) no permiten que SSIS se instale completamente, a pesar de que los Planes de mantenimiento esencialmente utilizan casi toda la funcionalidad de SSIS. (Sin embargo, hay un truco para evitar esto, suponiendo que tenga dos versiones de SQL Server, una de las cuales no está obstaculizada; consulte mi respuesta a continuación)hay una forma de hacer esto.
Suponga que, al igual que el OP, tiene dos instancias de SQL Server, una de las cuales tiene SSIS instalado y otra no (probablemente no puede, por ejemplo, si es SQL Server Web Edition).
Escriba un procedimiento almacenado que copie las filas del plan de mantenimiento del usuario del servidor bloqueado en el servidor no bloqueado. Las filas relevantes son:
Debería escribir este SP para que elimine las filas que coincidan
id
primero, luego inserte las últimas versiones (o un enfoque similar, por ejemplo,UPDATE
coincide conid
s, luegoINSERT
faltanid
s). Y necesitará configurar un servidor vinculado en uno u otro lado, para que pueda escribir SQL que se dirija a ambos servidores.Eso es todo, en realidad, puede llamar a esto regularmente ... desde un plan de mantenimiento, por ejemplo ... y hacer una copia de seguridad de todos los planes de mantenimiento en el lado no obstaculizado.
Este es un hack masivo, por supuesto, pero en realidad funciona. (Me imagino que es bastante importante que el número de versión de SQL Server sea el mismo en ambos lados, para que los datos
msdb.dbo.sysssispackages
sean tan compatibles entre las diferentes instancias del servidor como realmente parece ser).Por supuesto, siempre puede hacer una copia de seguridad de las filas relevantes de la tabla de la base de datos SSIS directamente. Eso funcionaría de todos modos, como una respuesta completa a la pregunta original. Como se dijo, esto no tiene nada que ver con presuponer SSIS, ¡solo presupone planes de mantenimiento!
Es un método ligero y compatible que funciona sin SSIS en ninguna parte del sistema. La ventaja del método más complejo y más hacky anterior es que proporciona planes exportados en un formato estándar, no solo como filas de datos desnudos; así que creo que es mucho más probable que se pueda importar en una versión diferente de SQL Server, más adelante.
fuente
He estado luchando con el mismo problema EXACTO. Aquí está la comida para llevar principal:
No se necesitan servicios de integración en su WEBSERVER. Una forma documentada es usar DTUTIL. Simplemente use CUALQUIER servidor SQL (incluso la edición gratuita para desarrolladores con todas las características de Enterprise) que tenga instalados los Servicios de integración para copiar los paquetes de mantenimiento de SQL Server de una fuente a un destino, incluso si no es la fuente o el destino del paquete como se muestra en Ejemplo A.
Ejemplo A: Ejecute DTUTIL en SQL Server MySSISServerA para copiar un paquete de mantenimiento SQL de MySourceServerB a MyDestServerC .
fuente
ANY
= misma versión, de lo contrario, DTUTIL actualizará el plan a vCurrentMira esto:
¿Cómo transferir (copiar) planes de mantenimiento de un servidor a otro? por Sreekanth Bandarla
Parafraseando y resumiendo:
En SSMS, en lugar de conectarse a "Motor de base de datos ...", conéctese a "Servicios de integración ...", para el mismo nombre de servidor.
Vaya a 'Paquetes almacenados / MSDB / Planes de mantenimiento'.
Existen todos sus planes de mantenimiento. Haga clic derecho sobre ellos para exportarlos.
fuente