Mais de um ano depois, quero que todos saibam minha experiência e o resultado final desta pergunta / tópico.
Comecei criando coisas por conta própria. Inicialmente, segui o Artigo Coletar e armazene dados históricos do contador de desempenho do SQL Server com CMVs de Tim Ford para obter algo e estendê- lo com os Dados que eu desejasse coletar. Portanto, uma vez por dia, eu executo vários procedimentos armazenados em cada servidor Sql que coletam algumas informações específicas de DMVs e armazenam os resultados no servidor local dentro de um banco de dados. Isso inclui o uso de índices, índices ausentes, entradas de log específicas, como crescimento automático, configurações do servidor, configurações do banco de dados de aplicativos, fragmentação, execução de tarefas, informações de log de transações, informações de arquivos, estatísticas de espera e muito mais.
Além disso, adicionei os resultados da execução sp_blitz do Brent Ozar regularmente neste repositório para coletar indicações valiosas adicionais para trabalhar, melhorar e relatar.
Todos os dados são coletados posteriormente em um Sql Server de monitoramento dedicado e, dessa forma, crio um armazenamento agrupado para obter informações relevantes sobre o desempenho de todos os meus servidores e utilizo isso como base para investigação e geração de relatórios.
Em seguida, criei folhas de excel e também relatórios usando serviços de relatório para analisar e interpretar. Algumas amostras:
Também configurei alguns contadores de desempenho que monitoram usando TYPEPERF, inspirado no artigo " Coletando dados de desempenho em uma tabela do SQL Server ", de Fedor Georgiev.
Na minha instância do SQL Monitoring, aciono o typeperf para executar e coletar um número configurável de amostras com um intervalo de amostras configurável e armazenar os resultados no meu banco de dados de monitoramento central.
Isso me permite observar valores de desempenho a longo prazo, exemplo:
Depois de um tempo usando isso para coletar informações de linha de base, reduziu-se o fato de que é necessário muito trabalho de manutenção para procurar trabalhos com falha, procedimentos de remoção de erros (por exemplo, no caso de um banco de dados ter sido colocado offline, alguns scripts falharam), mantendo as configurações após a substituição de um servidor ...
Além disso, o banco de dados que coleta todos os registros precisa de ajustes de manutenção e desempenho, para que surjam trabalhos adicionais para manter os dados úteis ...
O que está finalmente faltando é a capacidade de ver as coisas que acontecem ao vivo. No Best Case, poderei dizer o que possivelmente estava acontecendo no dia seguinte após a execução dos coletores de dados. Todos os detalhes também estão faltando. Não tenho acesso a gráficos de impasse, não consigo ver os planos de consultas que estavam sendo executadas em um período suspeito ...
Tudo isso me fez cobrar da gerência gastar dinheiro com uma solução pré-profissional que não sou capaz de criar sozinha.
A escolha final foi comprar o SentryOne porque, em comparação com outros, é convincente e fornece muitas informações necessárias para identificar nossos pontos negativos.
Como conclusão final, aconselho quem procura respostas para perguntas semelhantes a não tentar criar as coisas por conta própria, desde que você não tenha um ambiente pequeno e basicamente saudável. Se você tiver alguns sistemas e muitos problemas, procure imediatamente uma solução profissional e use a assistência do fornecedor em seus problemas, em vez de gastar muito tempo e dinheiro para criar algo menos útil. No entanto, essa rota ainda era muito interessante e me fez aprender muito que não quero perder.
Espero que você ache isso útil depois de encontrar este segmento de perguntas.
EDIT 20 de abril de 2017:
Brent Ozar publicou recentemente o seguinte artigo no facebook, que é uma abordagem semelhante adotada pela equipe do SQL Tiger: https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining -relatórios-desencadeados-para-monitoramento-corporativo /