Não é possível assistir dados ao vivo na sessão de eventos estendidos

9

Estou executando o SQL Server 2014 Developer Edition no meu PC. Estou tentando visualizar os dados na sessão system_health. No SSMS, conectei-me ao banco de dados, expandi o servidor / Management / Extended Events / Sessions. Vejo AlwaysON_health (parado) e system_health (em execução).

Quando clico com o botão direito do mouse na sessão system_health, recebo o seguinte erro:

O armazenamento falhou ao inicializar usando os parâmetros fornecidos. (Microsoft.SqlServer.XEventStorage) Não foi possível encontrar a sessão de Eventos Estendidos denominada "system_health". Verifique se a sessão existe e está iniciada. (Microsoft SQL Server, Erro: 25728)

Expanda system_health e vejo os destinos package0.event_file e package0.ring_buffer. Se clicar com o botão direito do mouse em um destino e escolher "Exibir dados de destino", recebo este erro:

O armazenamento falhou ao inicializar usando os parâmetros fornecidos. (Microsoft.SqlServer.XEventStorage) Não é possível exibir a função 'fn_MSXe_read_event_stream', porque ela não existe ou você não tem permissão. (Microsoft SQL Server, erro: 15151)

A função existe. Eu posso executá-lo:

select * from fn_MSXe_read_event_stream('system_health', 0);

Quando o faço, recebo este erro:

Msg 25728, Level 16, State 10, Line 6
The Extended Events session named "system_health" could not be found. Make  sure the session exists and is started.

Eu sei que a sessão system_health está lá. Vejo na lista de sessões:

select * from sys.dm_xe_sessions

address name       name
------------------ ------------- 
0x00000001FF6510C1 system_health

Eu tentei isso com minhas próprias sessões de eventos personalizados. Também não posso assistir os dados ao vivo neles.

Posso consultar os dados de destino do buffer de anel system_health sys.dm_xe_session_targets.

Por que não consigo assistir dados ao vivo para nenhuma sessão de eventos estendidos?

(Observe que há um item de feedback da Microsoft para esse problema.)

Paul Williams
fonte
11
Você pode testar isso em outra instância (usando a mesma cópia do SSMS) ou nessa instância a partir de uma cópia diferente do SSMS (por exemplo, de outra máquina)? Você tentou com a autenticação do Windows e sa? Parece um problema com a instância, mas sempre é bom descartar combinações.
Aaron Bertrand
Eu encontrei a resposta. O banco de dados padrão do meu login foi definido como o que eu costumo usar em vez de master. Definir meu banco de dados padrão de volta para masterresolver o erro.
Paul Williams
Isso parece estranho, se você clicar com o botão direito do mouse na sessão no Pesquisador de Objetos, o SQL Server saberá onde encontrá-la, independentemente do banco de dados padrão.
Aaron Bertrand
@AaronBertrand Sim, eu concordo! O SSMS deve saber como se conectar à sessão do evento, independentemente do meu banco de dados padrão. Vinculei um item do Microsoft Connect na minha pergunta, se alguém quiser votar ou comentar sobre ele.
Paul Williams
Qual login você está usando? Autenticação do Windows ou SQL? Em que papéis eles estão?
Aaron Bertrand

Respostas:

15

Eu encontrei o problema Meu login tinha um banco de dados padrão diferente do banco de masterdados. Quando alterei meu banco de dados padrão para master, o erro desapareceu e eu pude assistir ao Live Data nas sessões estendidas do evento.

Para alterar o banco de dados padrão, no SSMS, expandi o servidor, Segurança, Logins. Cliquei com o botão direito do mouse em minhas credenciais de usuário. Na página Propriedades de login do meu usuário, alterei "Banco de dados padrão" para master. O erro desapareceu quando fechei e reabri a conexão no SSMS Object Explorer.

EDIT 2018-12-11

No link de comentários sobre esse problema , Karl Fasick postou uma solução provável:

O Object Explorer não está conectado ao banco de dados mestre ... Para corrigir - desconecte o Object Explorer - Reconecte, mas vá para Propriedades da conexão e escolha explicitamente o mestre.

Paul Williams
fonte
11
Há um item do Connect para esse bug EXATO. A Microsoft fechou-a como 'não foi possível reproduzir': connect.microsoft.com/SQLServer/feedback/details/893993/… Por favor, vote se você chegou aqui da mesma maneira que eu (pesquisando no erro - no meu caso contra um 2016 instância).
Michael K Campbell