/*================================================================================== Curso: SQL SERVER 2019 https://www.udemy.com/course/draft/3957796/?referralCode=FB10D369E786D9FE8A48 Instrutor: Sandro Servino https://www.linkedin.com/in/sandroservino/?originalSubdomain=pt https://filiado.wixsite.com/sandroservino MONITORAMENTO: EXTENDED EVENTS ==================================================================================*/ -- EXTENDED EVENTS /*======= Extended Events é um sistema de monitoramento de desempenho leve que permite aos usuários coletar os dados n ecessários para monitorar e solucionar problemas no SQL Server. Usando Extended Events, você pode ver detalhes sobre as operações internas do sistema SQL e seu aplicativo. Ao criar uma sessão de Extended Events, você diz ao sistema: - Em quais ocorrências você está interessado. - Como você deseja que o sistema relate os dados para você. https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/quick-start-extended-events-in-sql-server?view=sql-server-ver15#:~:text=Extended%20events%20is%20a%20lightweight,about%20the%20extended%20events%20architecture. ==========*/ -- VAMOS AOS LAB -- PASSOS -- 1. Conecte-se com SSMS. -- 2. Selecione a Instancia SQL SERVER: Management > Extended Events > New Session -- 3. No canto superior esquerdo, clique na página General Page. -- Em seguida, digite YourSession, ou qualquer nome que desejar, na caixa de texto Session name. Não pressione o botão OK ainda, que vem apenas no final da demonstração. -- 4. No canto superior esquerdo, clique na página Events e, em Event Library pesquise por exemplo "sql_statement_completed", selecione e em seguida, clique no botão com -- formato de seta para selecionar este evento. -- 5. Nesta tela, no canto superior direito, clique no botão Configure. -- 6. Clique no Filter (predicate) -- 7. Na lista do campo Field, escolha sqlserver.sql_text -- 8. Para o Operator escolha o operador like_i_sql_unicode_string. Para Value coloque %SELECT%WHERE% e Database_name = Auditoriadba. Com isto iremos filtar todos os comandos SQL que tenham na mesma -- instrução SELECT e WHERE -- 9. No canto superior esquerdo, clique Data Storage page -- 10. Na area Targets, clique em "Click here to add a target" -- Na lista Type, escolha event_file. Isto significa que voce definirá o local para armazenar o arquivo que voce poderá ver. -- 11. Escolha no canto superior esquerdo, advanced page -- Escolha Multiple events loss e em reduza o Maximum dispatch latency para 3 segundos. -- E FINALMENTE CLIQUE EM OK -- 12. Repare que foi criado o novo Extended Event no menu sessios. Se clicar e selecionar propriedades poderá alterar este Extended Event. -- Poderá incluir novos eventos, filtros, etc -- 13. Poderá gerar um script e guardar para executar em outro momento. -- Mande gerar o script e repare se no campo de filtro de pesquisa que o wizard gerou: CREATE EVENT SESSION [event1] ON SERVER ADD EVENT sqlserver.sql_statement_completed( ACTION(sqlserver.client_app_name,sqlserver.client_hostname) WHERE ([sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'''%SELECT%WHERE%''') -- se gerou com ''' nao vai filtrar direito AND [sqlserver].[database_name]=N'''AUDITORIADBA''')) -- se gerou com ''' nao vai filtrar direito ADD TARGET package0.event_file(SET filename=N'P:\Backup\event1.xel', max_file_size=(100),max_rollover_files=(2)) WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_MULTIPLE_EVENT_LOSS, MAX_DISPATCH_LATENCY=1 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE, TRACK_CAUSALITY=OFF,STARTUP_STATE=ON) GO -- Se gerou a busca com varios ''' DESTA FORMA '''%SELECT%WHERE%''' e fez o mesmo no filtro do nome do Banco de Dados -- delete o Extend Event criado com o comando abaixo ou de forma manual pelo SSMS e recrie manualmente o Extend Event via script: DROP EVENT SESSION [event1] ON SERVER GO CREATE EVENT SESSION [event1] ON SERVER ADD EVENT sqlserver.sql_statement_completed( ACTION(sqlserver.client_app_name,sqlserver.client_hostname) WHERE ([sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%SELECT%WHERE%') AND [sqlserver].[database_name]=N'AUDITORIADBA')) ADD TARGET package0.event_file(SET filename=N'P:\Backup\event1.xel', max_file_size=(100),max_rollover_files=(2)) WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_MULTIPLE_EVENT_LOSS, MAX_DISPATCH_LATENCY=1 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE, TRACK_CAUSALITY=OFF,STARTUP_STATE=ON) GO -- Start novamente e teste com os SELECTs abaixo. -- 14. VAMOS ATIVAR ESTE EXTEND EVENT CRIADO, em propriedades clicar starting session. -- 15. Vamos rodar os sql abaixo: use auditoriadba go SELECT TOP (10000) [Registro] ,[Numero] ,[nomecliente] ,[endereco] ,[cidade] ,[estado] ,[pais] FROM [AuditoriaDBA].[dbo].[NOindex] where cidade = 'vitoria' go SELECT TOP (1) [Registro] ,[Numero] ,[nomecliente] ,[endereco] ,[cidade] ,[estado] ,[pais] FROM [AuditoriaDBA].[dbo].[NOindex] where cidade = 'porto alegre' go -- sem o where SELECT TOP (1) [Registro] ,[Numero] ,[nomecliente] ,[endereco] ,[cidade] ,[estado] ,[pais] FROM [AuditoriaDBA].[dbo].[NOindex] go -- 15. Rode este codigo para ler o que foi lancado no arquivo do extend event no disco SELECT object_name, file_name, file_offset, event_data, 'CLICK_NEXT_CELL_TO_BROWSE_XML RESULTS!' AS [CLICK_NEXT_CELL_TO_BROWSE_XML_RESULTS], CAST(event_data AS XML) AS [event_data_XML] -- TODO: In ssms.exe results grid, double-click this xml cell! FROM sys.fn_xe_file_target_read_file( 'P:\BACKUP\event1_*.xel', null, null, null ); -- 16 Pode ainda ver os dados chegando de forma ao vivo, mas eu prefiro ler os arquivos através do comando acima ---------- FIM LAB