Acho que aqui está o que você quer. Jamie Thompson postou sobre como extrair informações dos pacotes do SSIS. Os planos de manutenção são criados como pacotes SSIS e você pode usar as informações deste post para obter o que deseja. Boa sorte!
Eu sei que você pode usar uma consulta para descobrir quais bancos de dados têm a redução automática ativada, mas estou querendo saber se isso pode ser feito para os planos de manutenção. No momento, temos apenas alguns planos de manutenção, por isso é fácil verificar manualmente, mas posso ver como seria útil fazer uma consulta para fazer isso.
Acho que aqui está o que você quer. Jamie Thompson postou sobre como extrair informações dos pacotes do SSIS. Os planos de manutenção são criados como pacotes SSIS e você pode usar as informações deste post para obter o que deseja. Boa sorte!
Eu posso ter encontrado uma maneira de fazer isso funcionar no meu ambiente. Nossos planos de manutenção foram criados com o sistema de arrastar e soltar que o SQL Server 2008 usa, portanto, isso pode não funcionar da mesma forma se você não usar esse sistema. Aqui está a consulta que usei:
SELECIONE DISTINCT line3 FROM sysmaintplan_logdetail
WHERE line1 LIKE '% Shrink%' OU line2 LIKE '% Shrink%'
Eu percebo que as colunas line1-3 podem parecer um pouco confusas, então vou tentar explicar. A tabela sysmaintplan_logdetail possui uma coluna para line1-5. Essas 5 linhas parecem descrever o que está acontecendo com uma tarefa específica em um plano de manutenção. Eles nem sempre estão cheios e eu não tenho certeza se o SQL Server precisaria criar mais do que as 5 linhas, mas isso é o que estava lá para mim.
Quando examinei as entradas na minha tabela sysmaintplan_logdetail, notei que as linhas 1 e 2 continham a palavra shrink sempre que uma operação de redução era feita em um plano de manutenção. As linhas específicas foram:
line1 - Diminuir a tarefa do banco de dados (NOME DO SERVIDOR)
line2 - Diminuir banco de dados na conexão de servidor local
line3 - Contém o nome do banco de dados
Não posso garantir que essas entradas estivessem no mesmo local ou até mesmo na mesma sequência em outro servidor, mas parece possível criar uma consulta simples usando o sysmaintplan_logdetail depois de examiná-lo por alguns minutos. Espero que isso ajude alguém também.
A tabela msdb.sysjobsteps tem uma coluna chamada command. Esta coluna de comando contém a instrução SQL a ser executada por uma etapa específica de uma tarefa. A consulta a seguir deve determinar se alguma das etapas da tarefa reduz o banco de dados:
SELECT name
FROM sysjobs INNER ENTRE em sysjobsteps
ON sysjobs.job_id = sysjobsteps.job_id
ONDE o comando LIKE '% Shrink%'
Isso deve determinar se existem trabalhos no servidor que usam o Shrink e fornecer o nome do trabalho.