Copiar planos de manutenção para um servidor diferente

18

Existe uma maneira de copiar planos de manutenção de um SQL Server 2012 para outro? Ambos os servidores não estão acessíveis através da mesma cópia do Management Studio ao mesmo tempo (em redes diferentes).

Greg Balajewicz
fonte

Respostas:

20

Vá para o servidor em que os trabalhos existem, no Pesquisador de Objetos do Management Studio, vá para Gerenciamento> SQL Server Agent e realce a pasta Trabalhos. BaterF7 (ou Exibir> Detalhes do Pesquisador de Objetos). Você deve ver vários trabalhos no painel direito. Destaque os que você deseja copiar, clique com o botão direito do mouse em Trabalho de Script Como> Criar Para> Área de Transferência. Agora conecte-se ao outro servidor, abra uma nova janela de consulta, cole e pressione F5. Muito mais fácil do que brincar com o SSIS.

Pode ser necessário tomar medidas adicionais, dependendo do que os planos fazem. Conecte-se à instância do Integration Services, em vez da instância do banco de dados, expanda Pacotes Armazenados> MSDB> Planos de Manutenção e clique com o botão direito do mouse em qualquer plano e escolha Exportar Pacote. No outro servidor, siga as mesmas etapas, mas clique com o botão direito do mouse em Planos de manutenção e escolha Importar pacote. Você precisará fazer isso para cada plano.

Aaron Bertrand
fonte
10

Eu encontrei uma maneira mais hacking.

Todo plano de execução é um registro na msdb.sysssispackagestabela.

Você pode copiar registros da msdb.sysssispackagestabela do servidor de origem para a msdb.sysssispackagestabela do servidor de destino.

Basta criar um servidor vinculado no servidor de origem e usar esta inserção no servidor de origem:

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')

INFO: substituir o nome do servidor é crucial para manipular a conexão de destino no designer do plano de manutenção.

IMPORTANTE: Copiar registros apenas copia a estrutura do plano de manutenção. Para recriar trabalhos, quando você terminar a cópia, DEVE editar todos os Planos de Manutenção, redefinir a programação e salvá-la.

Riccardo Bassilichi
fonte
Sugira o uso de barras invertidas à direita na substituição ('ab \', 'yz \') para evitar a substituição de outras partes dos dados.
crokusek 26/11
-2
  1. log como "sa", caso contrário, não será exibido.

  2. para ver rapidamente:

insira a descrição da imagem aqui

ingconti
fonte
O OP estava perguntando sobre planos de manutenção que são separados dos trabalhos e não podem gerar scripts de criação da maneira que você pode para os trabalhos.
Jordan