Estamos procurando descomissionar uma instância do SQL Server que ainda tem alguns bancos de dados.
Como posso saber se eles ainda estão sendo usados pelos usuários ou por um aplicativo da web?
Encontrei um tópico do fórum que tinha uma consulta T-SQL que você poderia executar para recuperar a data da última consulta. Parece funcionar, mas quero saber se essas informações são válidas o suficiente para descartar bancos de dados. É isso?
Se você tiver métodos alternativos, isso também ajudaria.
sql-server
t-sql
jsauni
fonte
fonte
Respostas:
Você precisaria se preocupar com itens que foram eliminados do cache e que foram perdidos ou com bancos de dados com uso pouco frequente.
Em vez de descartar os bancos de dados da mão, coloque-os OFFLINE para impedir o acesso sem descartá-los ou no modo RESTRICTED_USER para limitar o acesso. Fazendo isso, você pode deixá-los nesse estado por um mês ou dois para verificar e verificar se há uso ocasional.
Você também pode usar um filtro de rastreamento de criador de perfil do servidor nesse banco de dados.
fonte
Estes são os métodos que eu usei no passado:
O problema é este: quanto tempo você espera para ter certeza de que ninguém vai acessar os dados? Para dados financeiros, alguns itens são executados diariamente, semanalmente, mensalmente, trimestralmente, semestralmente e anualmente. Mas um ano é suficiente? Também vi solicitações para manter os dados disponíveis por pelo menos sete anos e, em um caso, disseram-me que os dados em um sistema precisavam estar lá para sempre, mesmo que ninguém os estivesse usando.
O melhor conselho é o seguinte: o que você faz para desativar o acesso, certifique-se de poder ativá-lo imediatamente. Eu descobri que o destacamento funcionou melhor para isso. Eu simplesmente escreveria a recolocação e instruiria minha equipe "se alguém perguntar onde está, execute esse script". Isso nos deu a melhor chance de colocar as coisas de volta o mais rápido possível.
fonte
Eu concordo com Nic com seu conselho. Se você precisar ter certeza, precisará usar o Profiler (rastreio do lado do serviço), porque algumas das consultas SQL não serão armazenadas em cache ou, por qualquer motivo, o cache do procedimento pode ser removido.
Normalmente, eu também verificaria as informações de estatísticas do arquivo virtual para ver se há alguma leitura ou gravação acontecendo no nível do arquivo do SO. Mesmo se o banco de dados NÃO estiver ativo, você ainda verá pequenas leituras / gravações se estiver fazendo backups de log, backups completos etc ... mas isso também lhe dará uma idéia da atividade de leitura / gravação nesse banco de dados.
Antes de descartar qualquer banco de dados, eu asseguraria que você tivesse pelo menos 2 ou 3 backups legíveis (teste-os) em locais separados. Você nunca sabe quando precisa deles.
fonte
A consulta a seguir mostra os bancos de dados que não tiveram uso desde a última reinicialização, sem depender de planos de consulta mantidos no cache, pois mostram as E / S do usuário em relação aos índices (e heaps). Isso é mais ou menos como usar estatísticas de arquivo virtual, mas a DMV usada aqui exclui a atividade de E / S dos backups. Não é necessário manter um rastreamento do criador de perfil em execução, nenhum acionador ou auditoria é necessária. Obviamente, se você reiniciar o servidor SQL com frequência (ou anexar / desligar bancos de dados com frequência), talvez este não seja o caminho :-)
Dito isto, ainda concordo que, mesmo que essa consulta pareça confirmar que um banco de dados pode ser descartado, definitivamente faça o OFFLINE / desanexe ou negue o acesso do usuário por algum tempo, além de qualquer diligência de perguntar antes de realmente cair!
fonte
Eu trabalhei em um local que tinha um grande número de bancos de dados órfãos e semi-órfãos. Era difícil dizer se eles realmente eram órfãos, pois muitas tarefas eram sazonais ou anuais - para que o site funcione apenas de 3 a 4 meses por ano (por exemplo, os formulários W2 precisam ser arquivados eletronicamente em 1/31, portanto, o processamento do site estes ocorreram apenas de meados de janeiro até o final de abril).
O que foi feito foi uma combinação de:
* pergunte a todos os desenvolvedores se eles estão usando algum banco de dados ou outro (esses e-mails saem mensalmente ou sempre que os backups estão demorando muito).
* coloque o banco de dados offline e veja quem reclama.
* renomeie o servidor para ver quem reclama.
Como o chefe de cabelos pontudos só estava disposto a permitir documentação "completa e completa", um wiki foi expressamente proibido e as reduções de pessoal levaram a um declínio dramático na documentação que atendia ao padrão.
Se dependesse de mim, haveria uma página wiki por servidor com nomes de contato para cada banco de dados (e talvez uma breve descrição do que é o banco de dados). Qualquer banco de dados não documentado no wiki seria um bom jogo para exclusão.
Como tínhamos um grande cliente financeiro que ainda usava o SQL Server 2000 em 2009, tivemos que manter uma instância do SQL Server 2000 em execução até o cliente finalmente mudar para o SQL Server 2005.
fonte
Outras duas alternativas são:
Habilite a auditoria nos bancos de dados.
fonte
A próxima solução mostra páginas temporárias totais, limpas e sujas em MB para bancos de dados específicos em sua instância (encontrados na Internet e modificados um pouco):
ou
ou
fonte