Migração do MSX SQL Server 2005 para SQL Server 2014

Após escrever o Post anterior, a equipe de DBA’s no qual faço parte, decidiu migrar o servidor do MSX para uma instância que temos com o SQLServer 2014. Escrevo aqui os detalhes dessa migração.

Ao migrar de servidor, os jobs já existentes devem ser criados no novo servidor master.

Para migrar os jobs é bem simples, basta realizar os seguintes passos no servidor SQL Server 2005:

Abrir o Object Explorer Details (F7) -> SQL Server Agent (MSX) -> Jobs -> Multi-Server Jobs. Selecionar todos os Jobs que deseja migrar, clica com o botão direito e escolher a opção Script Job as -> Create To e gerar o script da melhor forma que achar para manipulá-lo ou executá-lo.

Foto1MigracaoMSX

Lembrando que esse script é alterado facilmente, trazendo maior flexibilidade. No meu caso, eu retirei a parte que associa o Job ao servidor target para realizar esse vínculo mais tarde.

Simples de realizar a migração dos Jobs não? Exatamente, realmente é bem simples, mas às vezes pode ocorrer o seguinte erro:

ErroMigracaoMSX

“Unable to cast object of type ‘System.DBNull’ to type ‘System.String’.”

Esse erro pode atrapalhar ou atrasar um pouquinho na migração. No post anterior foi relatado que frequentemente o servidor master, perdia a conexão com o servidor target e que a solução era excluir o servidor target e recriá-lo, com isso, o Server_id na sysjobservers muda, ocasionando esse erro na hora de migrar, já que no histórico de execuções, teremos o nome do Job como NULL, sendo que esse servidor não existe mais.

Executemos o seguinte comando para verificar :

 USE MSDB

SELECT j.Name,

js.server_id,

ts.Server_id

FROM dbo.sysjobservers js

INNER JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id

LEFT JOIN msdb.dbo.systargetservers ts ON ts.server_id = js.server_id

WHERE j.name IS NULL

 

Ao encontrar registros no SELECT anterior, executar o seguinte script para eliminar esses registros:



USE MSDB

DELETE FROM js

FROM dbo.sysjobservers js

INNER JOIN dbo.sysjobs j ON j.job_id = js.job_id

LEFT JOIN dbo.systargetservers ts ON ts.server_id = js.server_id

WHERE ts.server_id IS NULL

Como aqui estamos excluindo os registros de associação de determinado job  com um target server que não existe mais, não há problemas de executar esse script. Lembrando que é sempre bom realizar a verificação antes (SELECT).

Resolvendo esse problema, é só executar o passo de gerar o script para migração novamente.

Como os scripts que geram os jobs estão salvos, iremos desassociar todos os servidores target do servidor master que está na versão SQL Server 2005 (SQLServer2005) com o seguinte script:

Conectar no servidor SQLServer2005:


USE msdb

DELETE FROM dbo.systargetservers

WHERE server_name in ('','','','','','') --Colocar aqui a lista dos servidores <em>target</em>

Às vezes, por motivo de falha de atualização e na comunicação entre os servidores, essa dissociação não é realizada tão facilmente, fazendo com que seja necessário realizar manualmente com os seguintes passos:

Conectar no Servidor Target:

No Microsoft SQL Server Management Studio, clicar com o botão direito no SQL Server Agent -> Multi Server Administration -> Defect

Obs.: é importante que essa dissociação seja realizada, pois só é possível ter um servidor master para cada servidor target.

Após realizar a dissociação, iremos configurar o novo servidor como Master seguindo os seguintes passos:

No Microsoft SQL Server Management Studio, clicar com o botão direito no SQL Server Agent -> Multi Server Administration -> Make This a Master …

É só realizar a configuração solicitada. É bem simples e intuitivo.

E prontinho! É só gerar os scripts de criação dos jobs e testar a conexão. Após essa migração, que tem 15 dias, os problemas que ocorreriam com frequência e que foram relatados no Post Anterior não aconteceram.

Obs.: É importante lembrar que se você tiver alertas configurados e que nesses alertas é disparado um Job  a associação Alert + Job deverá ser refeita, pois ao alterar um job essa referência é perdida.


USE MSDB

EXEC msdb.dbo.sp_update_alert @name=N'NomeAlert',

@job_name=N'NomeJob'

Podemos perceber que a migração é bem simples de ser realizada necessitando apenas tomar alguns cuidados.

Referências:

https://sqlsanctum.wordpress.com/2015/02/12/multi-server-job-scripting-failure/

Anúncios

2 pensamentos sobre “Migração do MSX SQL Server 2005 para SQL Server 2014

  1. Muito bom o post, parabéns!
    Os artigos de MSX deste blog certamente vão ajudar e poupar o tempo de muita gente. Explicação prática e descomplicada para problemas reais (já me foi útil inclusive).
    []’s

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s