Oto jeden ze sposobów:
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'
EDYCJA : Skomentował dołączenie do sysusers w celu zapytania do pracy na 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'
EDYCJA 2 : Dla 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'
Proszę bardzo.
Kilka rzeczy tutaj ...
Widzę też, że próbujesz wyciągnąć informacje o schemacie tabel nadrzędnych. Sądzę, że aby to zrobić, musisz również dołączyć do samej tabeli sysobjects, aby poprawnie uzyskać informacje o schemacie dla tabeli nadrzędnej. powyższe zapytanie to robi. Również tabela sysusers nie była potrzebna w wynikach, więc Join został usunięty.
przetestowane z SQL 2000, SQL 2005 i SQL 2008 R2
źródło
SELECT Alias = Expression
. To nie było przestarzałe. To, co zostało przestarzałe, toSELECT 'Alias' = Expression
. Mam te informacje z twojego własnego linku! Popraw błędne informacje.Miałem ostatnio to samo zadanie i użyłem następującego dla bazy danych SQL Server 2012 DB. Użyj studia zarządzania i połącz się z bazą danych, którą chcesz przeszukać. Następnie uruchom następujący skrypt.
źródło
Możesz również uzyskać zestaw wyzwalaczy w następujący sposób:
źródło
źródło
Użyj tego zapytania:
To proste i przydatne.
źródło
A co o tym sądzisz: bardzo krótkie i zadbane :)
źródło
to działa dla mnie
źródło
To jest to, czego używam (zwykle owinięte w coś, co ja w Modelu):
Jak widzisz, to trochę więcej McGyver, ale myślę, że warto:
(Przewiń w prawo, aby zobaczyć ostatnią i najbardziej przydatną kolumnę)
źródło
Użyj tego zapytania:
źródło
to może pomóc.
źródło
Jeśli szukasz
ALL
wyzwalaczy, pamiętaj, że MS-SQL ma zarówno wyzwalacze oparte na SQL (sysobjects.type = 'TR'
), jak i wyzwalacze CLR (sysobjects.type = 'TA'
).źródło
Powyższy kod jest niepoprawny, jak pokazano:
źródło
Nekromancja.
Po prostu publikowanie, ponieważ wszystkie dotychczasowe rozwiązania są nieco niedokończone.
źródło
źródło
źródło
Jedną trudnością jest to, że tekst lub opis mają przesunięcia linii. Moja niezdarna kludge, aby uzyskać coś bardziej tabelarycznego, to dodać
HTML
literał doSELECT
klauzuli, skopiować i wkleić wszystko do notatnika, zapisać z rozszerzeniem html, otworzyć w przeglądarce, a następnie skopiować i wkleić do arkusza kalkulacyjnego. przykładbyć może nadal będziesz musiał wygłupiać się z kartami, aby umieścić opis w jednym polu, ale przynajmniej będzie to jeden wiersz, co uważam za bardzo pomocne.
źródło
C # Cribs: Skończyło się na tym super ogólnym jednym liner. Mam nadzieję, że jest to przydatne zarówno dla oryginalnego plakatu, jak i osób, które właśnie wpisały to samo pytanie, które zadałem w Google:
Charakterystyka zapytania:
źródło
źródło