Os gatilhos no nível do banco de dados e do servidor não têm o escopo definido como "objetos" em si (é por isso que você não pode criá-los em um esquema e por que eles não aparecem sys.objects
).
Você pode ver que esses objetos têm certas restrições sobre eles, por exemplo, os OBJECTPROPERTY()
documentos :
Esta função não pode ser usada para objetos sem escopo no esquema, como gatilhos DDL (linguagem de definição de dados) e notificações de eventos.
E da mesma forma nos OBJECTPROPERTYEX()
docs :
OBJECTPROPERTYEX não pode ser usado para objetos sem escopo no esquema, como gatilhos DDL (linguagem de definição de dados) e notificações de eventos.
Os OBJECT_ID()
documentos são um pouco mais explícitos:
Objetos sem escopo no esquema, como gatilhos DDL, não podem ser consultados usando OBJECT_ID. Para objetos que não são encontrados na exibição do catálogo sys.objects, obtenha os números de identificação do objeto consultando a exibição do catálogo apropriada. Por exemplo, para retornar o número de identificação do objeto de um gatilho DDL, use SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog
'.
Os OBJECT_NAME()
documentos são menos explícitos, mas mencionam a mesma restrição implicitamente (ênfase minha):
Retorna o nome do objeto de banco de dados para objetos com escopo no esquema .
Para a primeira consulta, não sei por que você precisa obter o nome por meio da função, pois a name
coluna sys.triggers
já fornece essa resposta. Para a segunda consulta, você pode simplesmente se juntar a sys.triggers
:
SELECT tr.*, ts.*
FROM sys.dm_exec_trigger_stats AS ts
LEFT OUTER JOIN sys.triggers AS tr
ON ts.[object_id] = tr.[object_id];
Você pode criar sua própria função, é claro, mas eu não conheço nenhuma função interna que faça essa correlação para você (e eu recomendo ficar longe das funções internas de metadados de qualquer maneira ).
Os gatilhos DDL são um tipo de animal especial. Portanto, se você estiver preocupado com a necessidade de participar de sys.procedures, sys.views etc., não faça isso.
sys.sql_expression_dependencies
->referenced_id
ingressarsys.objects
?