Usar eventos estendidos com Amazon RDS for Microsoft SQL Server
Você pode usar eventos estendidos no Microsoft SQL Server para capturar informações de depuração e solucionar problemas do Amazon RDS for SQL Server. Os eventos estendidos substituem o SQL Trace e o Server Profiler, que foram defasados pela Microsoft. Os eventos estendidos são semelhantes aos traços do Profiler, mas com controle mais granular nos eventos que estão sendo monitorados. Os eventos estendidos são compatíveis com as versões 2016 do SQL Server e posteriores do Amazon RDS. Para obter mais informações, consulte Visão geral de eventos estendidos
Os eventos estendidos são ativados automaticamente para usuários com privilégios de usuário primário no Amazon RDS for SQL Server.
Tópicos
Limitações e recomendações
Ao usar eventos estendidos do RDS for SQL Server, as seguintes limitações se aplicam:
-
Os eventos estendidos são compatíveis apenas com as Edições Enterprise e Standard.
-
Você não pode alterar as sessões de eventos estendidos padrão.
-
Defina o modo de partição de memória de sessão como
NONE
. -
O modo de retenção de eventos de sessão pode ser
ALLOW_SINGLE_EVENT_LOSS
ouALLOW_MULTIPLE_EVENT_LOSS
. -
Os destinos de monitoramento de eventos para Windows (ETW) não são compatíveis.
-
Verifique se os destinos dos arquivo estão no diretório
D:\rdsdbdata\log
. -
Para alvos de correspondência de pares, defina a propriedade
respond_to_memory_pressure
como1
. -
A memória de destino do buffer de anel não pode ser maior que 4 MB.
-
As seguintes ações não são aceitas:
-
debug_break
-
create_dump_all_threads
-
create_dump_single_threads
-
-
O evento
rpc_completed
é compatível com as seguintes versões e posteriores: 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2
Configuração de eventos estendidos no RDS for SQL Server
No RDS for SQL Server, você pode configurar os valores de determinados parâmetros de sessões de eventos estendidos. A tabela a seguir descreve os parâmetros configuráveis.
Nome do parâmetro | Descrição | Valor padrão do RDS | Valor mínimo | Valor máximo |
---|---|---|---|---|
xe_session_max_memory |
Especifica a quantidade máxima de memória a ser alocada à sessão para buffer de eventos. Esse valor corresponde à configuração max_memory da sessão do evento. |
4 MB | 4 MB | 8 MB |
xe_session_max_event_size |
Especifica o tamanho máximo de memória permitido para eventos grandes. Esse valor corresponde à configuração max_event_size da sessão do evento. |
4 MB | 4 MB | 8 MB |
xe_session_max_dispatch_latency |
Especifica a quantidade de tempo em que os eventos são armazenados em buffer na memória antes de serem despachados para destinos de sessão de eventos estendidos. Esse valor corresponde à configuração max_dispatch_latency da sessão do evento. |
30 segundos | 1 segundo | 30 segundos |
xe_file_target_size |
Especifica o tamanho máximo do destino do arquivo. Esse valor corresponde à configuração max_file_size do destino do arquivo. |
100 MB | 10 MB | 1 GB |
xe_file_retention |
Especifica o tempo de retenção em dias para arquivos gerados pelos destinos de arquivo das sessões de evento. | 7 dias | 0 dias | 7 dias |
nota
Definir xe_file_retention
como zero remove os arquivos.xel automaticamente depois que o bloqueio nesses arquivos é liberado pelo SQL Server. O bloqueio é liberado sempre que um arquivo.xel atinge o limite de tamanho definido em xe_file_target_size
.
Você pode usar o procedimento rdsadmin.dbo.rds_show_configuration
armazenado para mostrar os valores atuais desses parâmetros. Por exemplo, use a instrução SQL a seguir para visualizar a configuração atual do xe_session_max_memory
.
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
Você pode usar o procedimento rdsadmin.dbo.rds_set_configuration
armazenado para modificá-los. Por exemplo, use a instrução SQL xe_session_max_memory
a seguir para definir como 4 MB.
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
Considerações para implantações Multi-AZ
Quando você cria uma sessão de evento estendida em uma instância de banco de dados principal, ela não se propaga para a réplica em espera. Você pode fazer failover e criar a sessão de evento estendida na nova instância de banco de dados principal. Ou você pode remover e ler a configuração Multi-AZ para propagar a sessão de evento estendida para a réplica em espera. O RDS interrompe todas as sessões de evento estendidas não padrão na réplica em espera, de modo que essas sessões não consumam recursos no modo de espera. Por isso, depois que uma réplica em espera se tornar a instância de banco de dados principal, inicie manualmente as sessões de eventos estendidas no novo primário.
nota
Essa abordagem se aplica a grupos de disponibilidade sempre ativos e ao espelhamento do banco de dados.
Você também pode usar um trabalho do SQL Server Agent para monitorar a réplica em espera e iniciar as sessões se a espera se tornar a primária. Por exemplo, use a consulta a seguir na etapa de trabalho do SQL Server Agent para reiniciar sessões de evento em uma instância de banco de dados principal.
BEGIN IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE' AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE' AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1) ) BEGIN IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1') ALTER EVENT SESSION xe1 ON SERVER STATE=START IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2') ALTER EVENT SESSION xe2 ON SERVER STATE=START END END
Essa consulta reinicia as sessões de evento xe1
e xe2
em uma instância de banco de dados principal se essas sessões estiverem em um estado interrompido. Você também pode adicionar uma programação com um intervalo conveniente a essa consulta.
Consultando arquivos de eventos estendidos
Você pode usar o SQL Server Management Studio ou a função sys.fn_xe_file_target_read_file
para visualizar dados de eventos estendidos que usam destinos de arquivo. Para obter mais informações sobre essa função, consulte sys.fn_xe_file_target_read_file (Transact-SQL)
Destinos de arquivos de eventos estendidos só podem gravar arquivos no diretório D:\rdsdbdata\log
no RDS para SQL Server.
Como exemplo, use a consulta SQL a seguir para listar o conteúdo de todos os arquivos de sessões de eventos estendidos cujos nomes começam com xe
.
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);