AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 181675
Accepted
Riley Major
Riley Major
Asked: 2017-07-25 14:37:36 +0800 CST2017-07-25 14:37:36 +0800 CST 2017-07-25 14:37:36 +0800 CST

Qual é o número máximo de ações vinculadas permitidas para um evento estendido?

  • 772

Se você adicionar "muitas" ações a um evento em uma sessão de evento, receberá este erro:

Msg 25639, Level 16, State 23, Line 1 O evento, "[nome do evento]", excede o número de ações vinculadas permitidas.

Quantas ações são permitidas? Varia de acordo com o evento?

A resposta, baseada na experimentação, parece ser 27 para sqlserver.rpc_completed. Mas não encontrei esse número em nenhuma documentação da Microsoft . E parece variar de acordo com o evento, pois consegui 30 por sqlserver.sql_batch_completed.

Código de exemplo que falha:

CREATE EVENT SESSION [Test] ON SERVER 
ADD EVENT sqlserver.rpc_completed(
    ACTION(
        package0.callstack,
        package0.collect_cpu_cycle_time,
        package0.collect_current_thread_id,
        package0.collect_system_time,
        package0.event_sequence,
        package0.last_error,
        package0.process_id,
        sqlos.cpu_id,
        sqlos.numa_node_id,
        sqlos.scheduler_address,
        sqlos.scheduler_id,
        sqlos.system_thread_id,
        sqlos.task_address,
        sqlos.task_elapsed_quantum,
        sqlos.task_resource_group_id,
        sqlos.task_resource_pool_id,
        sqlos.task_time,
        sqlos.worker_address,
        sqlserver.client_app_name,
        sqlserver.client_connection_id,
        sqlserver.client_hostname,
        sqlserver.client_pid,
        sqlserver.context_info,
        sqlserver.database_id,
        sqlserver.database_name,
        sqlserver.is_system,
        sqlserver.nt_username,
        sqlserver.plan_handle))
GO
DROP EVENT SESSION [Test] ON SERVER
GO

Código de exemplo que é bem-sucedido (o mesmo, exceto excluindo o último item):

CREATE EVENT SESSION [Test] ON SERVER 
ADD EVENT sqlserver.rpc_completed(
    ACTION(
        package0.callstack,
        package0.collect_cpu_cycle_time,
        package0.collect_current_thread_id,
        package0.collect_system_time,
        package0.event_sequence,
        package0.last_error,
        package0.process_id,
        sqlos.cpu_id,
        sqlos.numa_node_id,
        sqlos.scheduler_address,
        sqlos.scheduler_id,
        sqlos.system_thread_id,
        sqlos.task_address,
        sqlos.task_elapsed_quantum,
        sqlos.task_resource_group_id,
        sqlos.task_resource_pool_id,
        sqlos.task_time,
        sqlos.worker_address,
        sqlserver.client_app_name,
        sqlserver.client_connection_id,
        sqlserver.client_hostname,
        sqlserver.client_pid,
        sqlserver.context_info,
        sqlserver.database_id,
        sqlserver.database_name,
        sqlserver.is_system,
        sqlserver.nt_username))
GO
DROP EVENT SESSION [Test] ON SERVER
GO

(Tentei algumas ações diferentes e não parece estar relacionado a quais ações estão incluídas - mas talvez seja baseado em uma contagem total de caracteres de nomes de ações?)

Lista completa de ações com as quais estava trabalhando:

package0.callstack,
package0.collect_cpu_cycle_time,
package0.collect_current_thread_id,
package0.collect_system_time,
package0.event_sequence,
package0.last_error,
package0.process_id,
sqlos.cpu_id,
sqlos.numa_node_id,
sqlos.scheduler_address,
sqlos.scheduler_id,
sqlos.system_thread_id,
sqlos.task_address,
sqlos.task_elapsed_quantum,
sqlos.task_resource_group_id,
sqlos.task_resource_pool_id,
sqlos.task_time,
sqlos.worker_address,
sqlserver.client_app_name,
sqlserver.client_connection_id,
sqlserver.client_hostname,
sqlserver.client_pid,
sqlserver.context_info,
sqlserver.database_id,
sqlserver.database_name,
sqlserver.is_system,
sqlserver.nt_username,
sqlserver.plan_handle,
sqlserver.query_hash,
sqlserver.query_hash_signed,
sqlserver.query_plan_hash,
sqlserver.query_plan_hash_signed,
sqlserver.request_id,
sqlserver.server_instance_name,
sqlserver.server_principal_name,
sqlserver.server_principal_sid,
sqlserver.session_id,
sqlserver.session_nt_username,
sqlserver.session_resource_group_id,
sqlserver.session_resource_pool_id,
sqlserver.session_server_principal_name

@@VERSION Saída:

Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) 
    Oct 28 2016 18:17:30 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor)
sql-server sql-server-2016
  • 1 1 respostas
  • 1096 Views

1 respostas

  • Voted
  1. Best Answer
    Sean Gallardy
    2018-03-21T11:56:58+08:002018-03-21T11:56:58+08:00

    Quantas ações são permitidas? Varia de acordo com o evento?

    Fiz algumas pesquisas e sim, há um limite para o número de ações e eventos que podem ser adicionados a uma definição de evento estendida. Não é um valor "difícil", mas baseado em muitas entradas diferentes, portanto, uma definição que não funciona pode funcionar apenas com a remoção de um único evento ou uma única ação em um único evento.

    E parece variar de acordo com o evento, pois consegui 30 porsqlserver.sql_batch_completed.

    Você já se deparou com a infinidade de configurações possíveis, então sabe que não é totalmente baseado no número de ações. Também não é específico para cada evento, mas uma combinação dos valores.

    O que você pode fazer?

    O primeiro item é que os dados de comprimento variável são o maior problema que você enfrentará. Como você sabe o que é comprimento variável e o que não é? Se você olhar no catálogo XE sys.dm_xe_objectsespecificamente em algumas ações, verá que existem type_namecolunas type_sizeque podem ser úteis para ver se você está adicionando vários pontos de dados de tamanho variável (tamanho 0 na captura de tela abaixo).

    insira a descrição da imagem aqui

    Agora, você provavelmente está pensando - ok, isso é ótimo, mas eu não conheço o limite mágico, então realmente não é útil. Pois é e não é. Se você olhar especificamente para isso do ponto de vista dos números, sim, não é muito útil ... no entanto, esta é uma maneira terrível de olhar para isso. Deve ser visto como: "Estou coletando apenas os dados de que preciso?" e na maioria dos casos você nunca terá um problema com esse erro.

    Se tomarmos a definição na pergunta que não funciona, algumas das informações coletadas parecem realmente desnecessárias. Você realmente precisa de pilha de chamadas, ID de thread atual, tempo de ciclo da CPU, endereço do trabalhador e endereço do agendador? A pilha de chamadas é variável, o resto é fixo, portanto, apenas eliminando a pilha de chamadas, você pode encaixar mais colunas, se necessário. Eu não estou dizendo que você precisa de mais, mas você poderia.

    A questão toda é limitar a definição a ser tão pequena quanto necessário. A coleta de tudo resultará em erros (como você teve aqui), lentidão do sistema, muitos dados para análise ou até mesmo interrupção do sistema. Só porque você pode não significa que você deve. Não há nada afirmando que esses limites mudarão ou não entre versões principais ou secundárias, portanto, manter a verdadeira necessidade mínima é a melhor prevenção. Por favor, não marque todas as caixas (gui) ou adicione todas as ações possíveis.

    • 9

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve