Desejo copiar um conjunto de categorias e agendamentos de trabalho entre servidores MS SQL (2012/2014).
select * FROM msdb.dbo.sysschedules
Retorna todos os agendamentos.
select * FROM msdb.dbo.syscategories
WHERE category_id IN (SELECT DISTINCT category_id FROM msdb.dbo.sysjobs)
Retorna todas as minhas categorias de trabalho.
Para adicioná-los, eu poderia usar os procedimentos armazenados:
sp_add_category
sp_add_jobschedule
Posso fazer isso com essas informações, mas seria quase tão tedioso quanto refazê-las manualmente.
Como posso fazer isso de uma maneira mais eficaz?
Outro utilitário legal do powershell que uso todos os dias para migrações de servidor é o Start-SqlServerMigration.ps1 escrito por Chrissy LeMaire
É muito adaptável com diferentes opções.
Por exemplo. Em seu cenário de migração de jobs com agendamento, você pode usar
por exemplo, o código PS abaixo moverá todos os bancos de dados (substituirá se os mesmos bancos de dados de nome existirem, pois ele usa o
force
parâmetro) de Source sqlserver\instance para Destination sqlcluster . Isso excluiráNorthwind, pubs
bancos de dados. Ele migrará todos os logins, excetonwuser, pubsuser, "corp\domain admins"
, migrará todos os trabalhos do agente sql, exportará as opções sp_configure do servidor de origem para o servidor de destino.Você pode usar o PowerShell para fazer o script de todos os trabalhos do SQL Agent em um servidor.
Este script inclui os planejamentos de trabalho que foram configurados no servidor de origem.
Na saída do script, você pode escolher os trabalhos do SQL Agent que deseja duplicar e criá-los no outro servidor.
Script SQL Config pode fazer isso por você. Ele cria um script para cada job do SQL Agent, que também contém a criação das categorias necessárias para cada job.