Em preparação para migrar um farm de servidores para a nuvem, estou tentando enumerar todos os servidores vinculados que foram definidos ao longo dos anos. Também preciso encontrar (e corrigir) o código que faz referência a esses servidores vinculados.
Aqui está algo que juntei para ajudar a identificar nomes de objetos que se referem ao servidor vinculado, mas isso só funciona em procs armazenados, visualizações, funções e gatilhos:
declare @sql varchar(2000)
select @SQL = 'use ?;
print ''?'';
print replicate(''-'',len(''?''));
print '' '';
select object_name(sc.id)
from syscomments sc
where text like ''%TheLinkedServer%''
'
exec sp_msforeachdb @sql
Eu sei que terei que abrir os pacotes DTS/SSIS... Estou apenas tentando terminar o máximo possível o mais rápido possível.
Para consultar jobs, você só precisa procurar nas
msdb
tabelas de jobs de:Além disso, syscomments é uma visão de compatibilidade com versões anteriores - não é a melhor maneira de procurar referências em objetos, principalmente porque qualquer objeto > 4000 caracteres será armazenado em várias linhas e poderia , potencialmente, ter o nome do servidor vinculado em duas linhas. Muito mais seguro seria:
E, finalmente, sp_msforeachdb não é confiável (veja aqui e aqui para uma substituição melhor).
Aqui está um procedimento de pesquisa útil que escrevi no ano passado que pode ser útil:
Ele conta com uma função split como esta (ou sua própria, se você já tiver uma ou, melhor ainda,
STRING_SPLIT()
se estiver no SQL Server 2016 ou superior e puder lidar com suas limitações ):Se você sabe o que está procurando, o Red Gate tem uma ferramenta de pesquisa gratuita muito boa chamada SQL Search, que é um plug-in para o SSMS. É mais fácil e menos sujeito a erros do que qualquer tentativa que fiz de examinar os comentários do sistema. Experimente. Faça o download aqui .
Ao pesquisar referências em trabalhos, certifique-se de incluir msdb na pesquisa.
Se você deseja consultar os trabalhos do SQL Agent diretamente, pode usar isto: