Aqui está uma maneira:
SELECT
sysobjects.name AS trigger_name
,USER_NAME(sysobjects.uid) AS trigger_owner
,s.name AS table_schema
,OBJECT_NAME(parent_obj) AS table_name
,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects
INNER JOIN sysusers
ON sysobjects.uid = sysusers.uid
INNER JOIN sys.tables t
ON sysobjects.parent_obj = t.object_id
INNER JOIN sys.schemas s
ON t.schema_id = s.schema_id
WHERE sysobjects.type = 'TR'
EDIT : junção comentada aos sysusers para que a consulta funcione no AdventureWorks2008.
SELECT
sysobjects.name AS trigger_name
,USER_NAME(sysobjects.uid) AS trigger_owner
,s.name AS table_schema
,OBJECT_NAME(parent_obj) AS table_name
,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects
/*
INNER JOIN sysusers
ON sysobjects.uid = sysusers.uid
*/
INNER JOIN sys.tables t
ON sysobjects.parent_obj = t.object_id
INNER JOIN sys.schemas s
ON t.schema_id = s.schema_id
WHERE sysobjects.type = 'TR'
Edição 2 : para SQL 2000
SELECT
o.name AS trigger_name
,'x' AS trigger_owner
/*USER_NAME(o.uid)*/
,s.name AS table_schema
,OBJECT_NAME(o.parent_obj) AS table_name
,OBJECTPROPERTY(o.id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY(o.id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY(o.id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY(o.id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY(o.id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(o.id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects AS o
/*
INNER JOIN sysusers
ON sysobjects.uid = sysusers.uid
*/
INNER JOIN sysobjects AS o2
ON o.parent_obj = o2.id
INNER JOIN sysusers AS s
ON o2.uid = s.uid
WHERE o.type = 'TR'
Aqui está.
Algumas coisas aqui...
Também vejo que você estava tentando extrair as informações do esquema das tabelas pai, acredito que para isso, você também precisaria associar a tabela sysobjects a si mesma para poder obter corretamente as informações do esquema da tabela pai. a consulta acima faz isso. Além disso, a tabela sysusers não era necessária nos resultados, para que o Join fosse removido.
testado com SQL 2000, SQL 2005 e SQL 2008 R2
fonte
SELECT Alias = Expression
. Não foi preterido. O que foi preterido éSELECT 'Alias' = Expression
. Eu recebi essas informações do seu próprio link! Corrija as informações incorretas.Eu tive a mesma tarefa recentemente e usei o seguinte para o sql server 2012 db. Use o management studio e conecte-se ao banco de dados que você deseja pesquisar. Em seguida, execute o seguinte script.
fonte
Você também pode obter o corpo dos gatilhos da seguinte maneira:
fonte
fonte
Use esta consulta:
É simples e útil.
fonte
E o que você acha disso: Muito curto e arrumado :)
fonte
esta funcionando para mim
fonte
É isso que eu uso (geralmente envolto em algo que eu coloco no Model):
Como você vê, é um pouquinho mais McGyver, mas acho que vale a pena:
(Role para a direita para ver a coluna final e mais útil)
fonte
Use esta consulta:
fonte
isso pode ajudar.
fonte
Se você estiver procurando por
ALL
gatilhos, lembre-se de que o MS-SQL possui gatilhos baseados em SQL (sysobjects.type = 'TR'
) e gatilhos baseados em CLR (sysobjects.type = 'TA'
).fonte
O código logo acima está incorreto, como mostrado:
fonte
Necromante.
Apenas postando, porque todas as soluções até agora ficam um pouco abaixo da completude.
fonte
fonte
fonte
Uma dificuldade é que o texto ou descrição possui feeds de linha. Meu desajeitado kludge, para colocá-lo em algo mais tabular, é adicionar um
HTML
literal àSELECT
cláusula, copiar e colar tudo no bloco de notas, salvar com uma extensão html, abrir em um navegador e copiar e colar em uma planilha. exemplovocê ainda pode precisar brincar com as guias para obter a descrição em um campo, mas pelo menos estará em uma linha, o que acho muito útil.
fonte
C # Cribs: acabei com esse liner super genérico. Espero que isso seja útil para o pôster original e / ou para as pessoas que digitaram a mesma pergunta que eu fiz no Google:
Características da consulta:
fonte
fonte