Alguém estava executando uma consulta em nosso banco de dados SQL Server remotamente e seu sistema travou.
Eles não têm backup dessa consulta e querem ver o que foi executado no servidor.
É possível encontrar essa consulta em um log ou em um histórico em algum lugar?
Similarmente, Grant Fritchey teve o problema em que ele havia fechado o SSMS e perdido a consulta em que estava trabalhando... blogou aqui: Oh **********!
EDITAR
Para tornar isso um pouco mais detalhado de uma resposta, o link referenciado acima Grant fornece uma consulta para simplesmente ir ao cache na instância para retirar a consulta que você acabou de executar (ou pelo menos tentar):
Mais algumas opções que foram observadas nos comentários do blog de Grant:
2005+, rastreamento padrão para o resgate.
O rastreamento padrão rola em 20 MB, mas o SQL retém o histórico de 5 rastreamentos. Com acesso ao servidor, você pode recuperar os arquivos *.trc do diretório MSSQL\Log. Se você não conseguir acessar o servidor, o seguinte fornecerá o nome do arquivo de rastreamento padrão atual:
Se o arquivo atual for, por exemplo, E:\MSSQL.1\MSSQL\LOG\log_200.trc, os arquivos anteriores devem ser log_199.trc, log_198.trc etc. Obtenha o conteúdo do rastreamento com:
Você pode recuperar informações de planos de consulta em cache, verificar BOL para obter informações em sys.dm_exec_query_stats ou executar isso no estúdio de gerenciamento conectado ao mesmo banco de dados:
Filtre a saída com
para estreitar os resultados.
Se o banco de dados estiver no modo de recuperação total, poderá haver uma chance de recuperar alguns dados e obter informações sobre o que foi feito lendo o log de transações.
Infelizmente, isso não é suportado por padrão, mas existem maneiras de fazer isso.
Você pode tentar usar ferramentas de terceiros, como ApexSQL Log ou SQL Log Rescue (gratuito, mas somente SQL 2000).
Outra opção é tentar usar funções não documentadas DBCC LOG ou fn_dblog. Isso é mais complexo, mas é gratuito.
O histórico de consultas pode ser visualizado usando as visualizações do sistema:
Por exemplo, usando a seguinte consulta:
As consultas em execução atuais podem ser vistas usando o seguinte script:
Essa solicitação exibe todas as solicitações ativas e todas as solicitações que bloqueiam explicitamente as solicitações ativas.
Todos esses e outros scripts úteis são implementados como representações no banco de dados SRV , que é distribuído gratuitamente. Por exemplo, o primeiro script veio da view [inf].[vBigQuery] e o segundo veio da view [inf].[vRequests] .
Existem também várias soluções de terceiros para o histórico de consultas. Eu uso o Query Manager do Dbeaver : e o Query Execution History do SQL Tools , que está embutido no SSMS :
Se o seu banco de dados estiver definido para o modelo de recuperação completa, você poderá investigar os backups do log de transações. Veja
fn_dump_dblog
para mais informações.