AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 182336
Accepted
user_0
user_0
Asked: 2017-08-02 01:09:37 +0800 CST2017-08-02 01:09:37 +0800 CST 2017-08-02 01:09:37 +0800 CST

Select from sys.server_file_audits retorna o nome de arquivo errado

  • 772

Ativei uma auditoria em uma instância do SQL Server 2016.
Versão i SP1 CU3, Enterprise Edition.
Com esta consulta:

SELECT * FROM sys.server_file_audits

Eu recebo como log_file_path : O:\auditfiles\
In log_file_name : logins_3D6DA4C0-B388-4175-88A5-D2820733CFB7.sqlaudit

Mas quando eu consulto:

SELECT * FROM sys.fn_get_audit_file ('O:\auditfiles\logins_3D6DA4C0-B388-4175-88A5-D2820733CFB7.sqlaudit',default,default);

Não retorna nada.
Verificando no sistema de arquivos o nome real do arquivo é:

logins_3D6DA4C0-B388-4175-88A5-D2820733CFB7_0_131451051332700000.sqlaudit

Onde a parte do nome do arquivo _0_131451051332700000 não é recuperada da consulta no esquema sys.

Quando seleciono com o nome de arquivo correto, recebo os resultados.
Eu preciso automatizar isso para coletar dados de consultas externas.

Como posso recuperar o nome de arquivo correto?

sql-server audit
  • 1 1 respostas
  • 1499 Views

1 respostas

  • Voted
  1. Best Answer
    Scott Hodgin - Retired
    2017-08-02T03:18:53+08:002017-08-02T03:18:53+08:00

    Revendo a documentação para sys.server_file_audits , o log_file_nameé (destacando o meu)

    Nome base para o arquivo de log fornecido no CREATE AUDIT DDL. Um número incremental é adicionado ao arquivo base_log_name como um sufixo para criar o nome do arquivo de log .

    Dependendo da rapidez com que seus arquivos sqlaudit estão sendo criados, pode ser extremamente difícil determinar qual é o arquivo de auditoria ' atual '.

    Se você quiser uma seleção rápida e única de informações de auditoria, você pode usar curingas de '*.sqlaudit' para ler TODOS os arquivos no diretório.

    SELECT * FROM sys.fn_get_audit_file ('O:\auditfiles\logins*.sqlaudit',default,default);
    

    A leitura de arquivos sqlaudit que estão sendo gravados no momento apresenta desafios no fato de que as linhas podem ser gravadas nesse arquivo ativo imediatamente APÓS você ter acabado de lê-lo, portanto, você pode perder futuras linhas de auditoria se não as selecionar continuamente. Além disso, esteja ciente de que os arquivos de auditoria continuarão sendo gravados no caminho do diretório e a seleção de curinga será executada cada vez mais, a menos que você implemente algum tipo de processo de remoção dos arquivos sqlaudit.

    Se sua intenção é rastrear e salvar essas informações de auditoria, sugiro implementar uma solução semelhante a uma resposta que dei para ' Como carregar dados em uma tabela do arquivo de auditoria do SQL Server? '

    Ele usa um trabalho do Sql Agent que executa um procedimento armazenado para processar os arquivos sqlaudit. Em resumo, o procedimento armazenado:

    • Usa o Powershell para mover qualquer arquivo de auditoria (que não esteja sendo gravado no momento) para um compartilhamento de arquivos de teste. O comando powershell usa o parâmetro -ErrorAction SilentlyContinue, que permite que o comando 'pule' os arquivos que estão sendo gravados no momento ao copiar para o compartilhamento de arquivos de teste. Eventualmente, os arquivos 'bloqueados' ficarão disponíveis para serem copiados em um intervalo futuro.
    • Agora que tenho arquivos SQLAudit disponíveis para leitura do compartilhamento de arquivos de teste, podemos usar sys.fn_get_audit_file para processar todos os arquivos SQLAudit do compartilhamento de arquivos de teste usando curingas.
    • Depois de consumir os arquivos do compartilhamento de arquivos de teste, uso o Powershell para excluir os arquivos do compartilhamento de arquivos de teste.
    • 2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve