Meu objetivo é auditar todas as consultas em uma instância, quem as está executando e de onde, quantas leituras, para consolidar/migrar em outra instância.
Descobri que a melhor maneira é através de eventos estendidos para arquivos .xel, ao longo de 2 semanas, copiá-los e analisá-los no meu desktop bem especificado. Configure a captura com o número mínimo de detalhes (campos), então realmente não pode torná-la menor que isso - aproximadamente 12 GB em 12 arquivos. Usou "Mesclar arquivos de eventos estendidos" no SSMS para carregar os arquivos .xel e processar conforme detalhado em https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/advanced-viewing-of- target-data-from-extended-events-in-sql-server?view=sql-server-2017
Esta é realmente a melhor maneira de fazê-lo? Existe uma ferramenta melhor para carregar os arquivos? É muito lento com o SSMS 17.7 - exemplo: com apenas 4 filtros até agora (antes de entrar em agrupamento e agregados), levou mais de 12h para processar 50% dos logs.
Para arquivos de rastreamento XE grandes, uso ferramentas personalizadas com QueryableXEventData . Descobri que isso é muito mais rápido do que a análise XML no T-SQL.
Abaixo está um PowerShell básico que importa campos e ações selecionados de um
rpc_completed
rastreamento de evento para uma tabela em lotes de 10 mil. Você precisará incluir umAdd-Type
comando para os assembliesMicrosoft.SqlServer.XE.Core.dll
eMicrosoft.SqlServer.XEvent.Linq.dll
, que estará na pasta de instalação do SQL Server com o local exato variando dependendo da versão do SQL e do local de instalação escolhido.Observe que há coleções separadas de Campos e Ações na
PublishedEvent
classe, portanto, você precisará extrair valores da conexão apropriada.A maneira mais rápida de ler e analisar XEvents atualmente é usando a nova biblioteca XELite da Microsoft. Você pode encontrá-lo aqui: XELite no NuGet.org Se você é um cara do PowerShell, pode usar o módulo SQLServer atualizado que é baseado na biblioteca XELite. Você pode encontrá-lo na galeria: SQLServer .