O histórico de consultas é armazenado em alguns arquivos de log? Se sim, você pode me dizer como encontrar a localização deles? Caso contrário, você pode me dar algum conselho sobre como vê-lo?
sql-server
logging
ssms
mstaniloiu
fonte
fonte
Respostas:
[Como essa pergunta provavelmente será encerrada como duplicada.]
Se o SQL Server não tiver sido reiniciado (e o plano não tiver sido despejado etc.), você poderá encontrar a consulta no cache do plano.
Se você perdeu o arquivo porque o Management Studio travou, poderá encontrar arquivos de recuperação aqui:
Caso contrário, você precisará usar outra coisa a seguir para ajudá-lo a salvar seu histórico de consultas, como o SSMS Tools Pack, conforme mencionado na resposta de Ed Harper - embora não seja gratuito no SQL Server 2012+. Ou você pode configurar algum rastreamento leve filtrado no seu nome de login ou host (mas use um rastreamento do lado do servidor, não o Profiler, para isso).
Como comentou @ Nenad-Zivkovic, pode ser útil ingressar
sys.dm_exec_query_stats
e solicitarlast_execution_time
:fonte
sys.dm_exec_query_stats
e pesquisar ou ordem porlast_execution_time
Tarde, mas espero que útil, pois acrescenta mais detalhes ...
Não há como ver as consultas executadas no SSMS por padrão. Existem várias opções embora.
Lendo o log de transações - isso não é algo fácil de fazer porque está em formato proprietário. No entanto, se você precisar ver consultas que foram executadas historicamente (exceto SELECT), essa é a única maneira.
Você pode usar ferramentas de terceiros para isso, como ApexSQL Log e SQL Log Rescue (gratuito, mas apenas para o SQL 2000). Confira este tópico para obter mais detalhes aqui Explorador / Analisador de Log de Transações do SQL Server
Perfilador do SQL Server - mais adequado se você deseja iniciar a auditoria e não está interessado no que aconteceu anteriormente. Use filtros para selecionar apenas as transações necessárias. Caso contrário, você acabará com toneladas de dados muito rapidamente.
Rastreamento do SQL Server - mais adequado se você deseja capturar todos ou a maioria dos comandos e mantê-los no arquivo de rastreamento que pode ser analisado posteriormente.
Acionadores - mais adequado se você deseja capturar DML (exceto selecionar) e armazená-los em algum lugar no banco de dados
fonte
O pacote de ferramentas SSMS adiciona funcionalidade ao registro do histórico de execução, entre outras coisas.
fonte
Como outros observaram, você pode usar o SQL Profiler, mas também pode aproveitar sua funcionalidade por meio de procedimentos armazenados do sistema sp_trace_ *. Por exemplo, esse snippet SQL (pelo menos em 2000; acho que é o mesmo para o SQL 2008, mas você terá que verificar duas vezes) capturas
RPC:Completed
eSQL:BatchCompleted
eventos para todas as consultas que demoram mais de 10 segundos para executar e salvar a saída em um arquivo de rastreamento que você pode abrir no SQL Profiler posteriormente:Você pode encontrar o ID de cada evento de rastreamento, colunas etc. nos Manuais Online; basta procurar os sprocs sp_trace_create , sp_trace_setevent e sp_trace_setfiler . Você pode controlar o rastreamento da seguinte maneira:
... onde '15' é o ID de rastreamento (conforme relatado por sp_trace_create, que o primeiro script inicia acima).
Você pode verificar para ver com que rastreamentos estão sendo executados:
A única coisa que direi com cautela - não sei quanta carga isso colocará no seu sistema; ele adicionará alguns, mas o tamanho desses "alguns" provavelmente depende da ocupação do servidor.
fonte
O sistema não registra consultas dessa maneira. Se você sabe que deseja fazer isso com antecedência, pode usar o SQL Profiler para registrar o que está chegando e rastrear consultas durante o tempo em que o Profiler estiver em execução.
fonte
Eu uso a consulta abaixo para rastrear a atividade do aplicativo em um servidor SQL que não possui o gerenciador de perfis de rastreamento ativado. O método usa o Query Store (SQL Server 2016 ou superior) em vez das DMVs. Isso oferece uma melhor capacidade de analisar dados históricos, bem como pesquisas mais rápidas. É muito eficiente capturar consultas de execução curta que não podem ser capturadas por sp_who / sp_whoisactive.
fonte
Isso deve mostrar a hora e a data em que uma consulta foi executada
fonte
Você pode monitorar consultas SQL pelo SQL Profiler, se precisar
fonte
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 solicitações ativas.
Todos esses e outros scripts úteis são implementados como representações no banco de dados SRV , que é distribuído livremente. Por exemplo, o primeiro script veio da exibição [inf]. [VBigQuery] e o segundo veio da exibição [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 , incorporado no SSMS :
fonte
Esse recurso não existe imediatamente no SSMS.
Se você estiver usando o SSMS 18 ou mais recente, tente o SSMSPlus.
Possui um recurso de histórico de consultas.
https://github.com/akarzazi/SSMSPlus
Disclaimer: Eu sou o autor.
fonte
você pode usar "Gerar script automaticamente a cada salvamento", se estiver usando o Management Studio. Isso certamente não é log. Verifique se útil para você ..;)
fonte
Se as consultas nas quais você está interessado são dinâmicas e falham intermitentemente, você pode registrar o SQL e a data e hora do usuário em uma tabela no momento em que a instrução dinâmica é criada. Isso seria feito caso a caso, pois requer programação específica e leva um tempo de processamento extra, assim como somente nas poucas consultas com as quais você está mais preocupado. Mas ter um registro das instruções específicas executadas pode realmente ajudar quando você está tentando descobrir por que ela falha apenas uma vez por mês. As consultas dinâmicas são difíceis de testar completamente e, às vezes, você obtém um valor de entrada específico que simplesmente não funciona e fazer esse log no momento em que o SQL é criado geralmente é a melhor maneira de ver o que especificamente não estava no sql que foi criado.
fonte
Um método ligeiramente pronto para uso seria criar uma solução no AutoHotKey. Eu uso isso, e não é perfeito, mas funciona e é gratuito. Essencialmente, esse script atribui uma tecla de atalho a CTRL+ SHIFT+, Rque copia o SQL selecionado no SSMS ( CTRL+ C), salva um arquivo SQL de carimbo de data e, em seguida, executa a consulta destacada ( F5). Se você não está acostumado com scripts AHK, o ponto e vírgula inicial é um comentário.
As maiores limitações são que esse script não funcionará se você clicar em "Executar" em vez de usar o atalho de teclado, e esse script não salvará todo o arquivo - apenas o texto selecionado. Mas você sempre pode modificar o script para executar a consulta e selecionar tudo ( CTRL+ A) antes da cópia / salvar.
O uso de um editor moderno com recursos "localização em arquivos" permitirá pesquisar seu histórico SQL. Você pode até gostar e juntar seus arquivos em um banco de dados SQLite3 para consultar suas consultas.
fonte