Copiar planes de mantenimiento a un servidor diferente

19

¿Hay alguna forma de copiar planes de mantenimiento de un SQL Server 2012 a otro? No se puede acceder a ambos servidores a través de la misma copia de Management Studio al mismo tiempo (en diferentes redes).

Greg Balajewicz
fuente

Respuestas:

20

Vaya al servidor donde existen los trabajos, en el Explorador de objetos de Management Studio vaya a Administración> Agente SQL Server y resalte la carpeta Trabajos. Presiona F7(o Ver> Detalles del Explorador de objetos). Debería ver varios trabajos en el panel derecho. Resalte los que desea copiar, haga clic con el botón derecho en Script Job As> Create To> Clipboard. Ahora conéctese al otro servidor, abra una nueva ventana de consulta, pegue y presione F5. Mucho más fácil que mucking con SSIS.

Es posible que tenga que tomar medidas adicionales, según lo que hagan los planes. Conéctese a la instancia de Integration Services, en lugar de la instancia de la base de datos, expanda Paquetes almacenados> MSDB> Planes de mantenimiento, haga clic con el botón derecho en cualquier plan y elija Exportar paquete. En el otro servidor, siga los mismos pasos, pero haga clic con el botón derecho en Planes de mantenimiento y elija Importar paquete. Deberá hacer esto para cada plan.

Aaron Bertrand
fuente
11

Encontré una forma más pirata.

Cada plan de ejecución es un registro en la msdb.sysssispackagestabla.

Puede copiar registros de la msdb.sysssispackagestabla del servidor de origen a la msdb.sysssispackagestabla del servidor de destino.

Simplemente cree un servidor vinculado en el servidor de origen y use este Insertar desde el servidor de origen:

INSERT INTO 
    YOUR-DEST-SERVER-NAME.msdb.dbo.sysssispackages
SELECT        
    name, 
    id, 
    description, 
    createdate, 
    folderid, 
    ownersid, 
    cast(
        cast(
            replace(
                cast(
                    CAST(packagedata AS VARBINARY(MAX)) AS varchar(max)
                ), 
            'YOUR-SOURCE-SERVER-NAME', 'YOUR-DEST-SERVER-NAME') 
        as XML) 
    as VARBINARY(MAX)) as packagedata, 
    packageformat, 
    packagetype, 
    vermajor, 
    verminor, 
    verbuild, 
    vercomments, 
    verid, 
    isencrypted, 
    readrolesid, 
    writerolesid

FROM
    msdb.dbo.sysssispackages AS sysssispackages_1
WHERE        
    (name = 'YourMaintenancePlanName')

INFORMACIÓN: reemplazar el nombre del servidor es crucial para manejar la conexión de destino en el diseñador del plan de mantenimiento.

IMPORTANTE: los registros de copia solo copian la estructura del plan de mantenimiento. Para volver a crear trabajos, cuando termine la copia, DEBE editar cada plan de mantenimiento, restablecer el cronograma y guardarlo.

Riccardo Bassilichi
fuente
1
Sugiera utilizar barras invertidas finales en el reemplazo ('ab \', 'yz \') para evitar reemplazar otras partes de los datos.
crokusek
-2
  1. iniciar sesión como "sa" de lo contrario no se mostrará.

  2. para ver rápidamente:

ingrese la descripción de la imagen aquí

ingconti
fuente
OP estaba preguntando acerca de los planes de mantenimiento que están separados de los trabajos y no pueden generar secuencias de comandos de creación de la manera que puede hacerlo para los trabajos.
Jordania