Los desencadenantes a nivel de la base de datos y del servidor no tienen alcance como "objetos" per se (es por eso que no puede crearlos bajo un esquema, y por qué no aparecen en sys.objects
).
Puede ver que estos objetos tienen ciertas restricciones, por ejemplo en los OBJECTPROPERTY()
documentos :
Esta función no se puede usar para objetos que no tienen un alcance de esquema, como los desencadenadores del lenguaje de definición de datos (DDL) y las notificaciones de eventos.
Y de manera similar en los OBJECTPROPERTYEX()
documentos :
OBJECTPROPERTYEX no se puede usar para objetos que no tienen un alcance de esquema, como los desencadenadores del lenguaje de definición de datos (DDL) y las notificaciones de eventos.
Los OBJECT_ID()
documentos son un poco más explícitos:
Los objetos que no tienen un alcance de esquema, como los desencadenadores DDL, no pueden consultarse utilizando OBJECT_ID. Para los objetos que no se encuentran en la vista de catálogo sys.objects, obtenga los números de identificación de objeto consultando la vista de catálogo adecuada. Por ejemplo, para devolver el número de identificación de objeto de un desencadenador DDL, use SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog
'.
Los OBJECT_NAME()
documentos son menos explícitos, pero mencionan la misma restricción implícitamente (el énfasis es mío):
Devuelve el nombre del objeto de la base de datos para objetos con ámbito de esquema .
Para la primera consulta, no estoy seguro de por qué necesita obtener el nombre a través de la función, ya que la name
columna sys.triggers
ya le da esa respuesta. Para la segunda consulta, puede unirse 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];
Podría crear su propia función, por supuesto, pero no conozco ninguna función integrada que haga esta correlación por usted (y, de todos modos, recomiendo mantenerse alejado de las funciones de metadatos integradas ).
Los desencadenantes de DDL son una especie de animal especial. Entonces, si le preocupa también tener que unirse a sys.procedures, sys.views, etc., no lo haga.
sys.sql_expression_dependencies
->referenced_id
unirsesys.objects
?