Usar eventos estendidos com Amazon RDS for Microsoft SQL Server - Amazon Relational Database Service

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 2012 do SQL Server e posteriores Amazon RDS. Para obter mais informações, consulte Visão geral de eventos estendidos na documentação da Microsoft.

Os eventos estendidos são ativados automaticamente para usuários com privilégios de usuário primário no Amazon RDS for SQL Server.

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 ou ALLOW_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 como 1.

  • 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) na documentação da Microsoft.

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);