it-swarm.com.de

Wie finden Sie alle Auslöser, die einer Tabelle mit SQL Server zugeordnet sind?

Ich habe einen Trigger für eine Tabelle in SQL Server erstellt, und es funktioniert für mich.

Mein Problem ist: Wie finde ich es und modifiziere es?

Ich verwende diese Abfrage, um meine Auslöser zu finden:

select * from sys.triggers

Finden Sie alle Auslöser, aber wie öffnen und ändern Sie die Auslöser?

36
ar.gorgin

Sie können dies einfach mit SSMS tun. Gehen Sie einfach zu Ihrem Tabellennamen und erweitern Sie den Trigger-Knoten, um eine Liste der dieser Tabelle zugeordneten Trigger anzuzeigen. Klicken Sie mit der rechten Maustaste, um Ihren Auslöser zu ändern.enter image description here

43
Buzz
select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%YourTableName%'

Auf diese Weise können Sie alle Auslöser auflisten, die der angegebenen Tabelle zugeordnet sind.

30
Jigar Pandya
select m.definition from sys.all_sql_modules m inner join  sys.triggers t
on m.object_id = t.object_id 

Kopieren Sie einfach die Definition und ändern Sie den Auslöser.

Ansonsten können Sie einfach zu SSMS gehen und die DB erweitern. Unter Programmierbarkeit erweitern Sie Datenbank-Trigger, klicken Sie dann mit der rechten Maustaste auf den jeweiligen Trigger und klicken Sie auf Ändern.

6
AnandPhadke

Das könnte nützlich sein 

SELECT 
 t.name AS TableName,
 tr.name AS TriggerName  
FROM sys.triggers tr
INNER JOIN sys.tables t ON t.object_id = tr.parent_id
WHERE 
t.name in ('TABLE_NAME(S)_GOES_HERE');

Auf diese Weise müssen Sie nur den Namen der Tabellen einfügen, und die Abfrage holt alle benötigten Trigger ab

6
Saurabh

verwenden Sie sp_helptrigger, um die Triggerliste für die zugehörigen Tabellen zu finden

5
Padhu

trigger auf dem Tisch finden:

select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%TableName%'

und Sie können eine Speicherprozedur finden, die eine Referenz der Tabelle hat

SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%yourtablename%'
2
Rahul mishra

Durchgehen 

Muss alle Trigger in der SQL Server-Datenbank mit Tabellenname und Tabellenschema auflisten.

Diese URL enthält eine Reihe von Abfragen, mit denen Sie die Liste der Trigger erhalten können, die einer bestimmten Tabelle zugeordnet sind.

Ich glaube, dass Sie in sqlserver arbeiten 

Um einen Trigger zu ändern

  1. Erweitern Sie eine Servergruppe und dann einen Server.

  2. Erweitern Sie Datenbanken, erweitern Sie die Datenbank, zu der die Tabelle gehört, die den Auslöser enthält, und klicken Sie auf Tabellen.

  3. Klicken Sie im Detailbereich mit der rechten Maustaste auf die Tabelle, in der der Auslöser vorhanden ist, zeigen Sie auf Alle Tasks, und klicken Sie dann auf Auslöser verwalten.

  4. Wählen Sie unter Name den Namen des Auslösers.

  5. Ändern Sie den Text des Auslösers im Feld Text nach Bedarf. Drücken Sie STRG + TAB, um den Text eines SQL Server Enterprise Manager -Triggers einzuziehen.

  6. Um die Syntax des Triggers zu überprüfen, klicken Sie auf Syntax prüfen.

2

Mit dieser Abfrage können Sie alle Trigger in allen Tabellen und allen Ansichten finden.

    ;WITH
        TableTrigger
        AS
        (
            Select 
                Object_Kind = 'Table',
                Sys.Tables.Name As TableOrView_Name , 
                Sys.Tables.Object_Id As Table_Object_Id ,
                Sys.Triggers.Name As Trigger_Name, 
                Sys.Triggers.Object_Id As Trigger_Object_Id 
            From Sys.Tables 
            INNER Join Sys.Triggers On ( Sys.Triggers.Parent_id = Sys.Tables.Object_Id )
            Where ( Sys.Tables.Is_MS_Shipped = 0 )
        ),
        ViewTrigger
        AS
        (
            Select 
                Object_Kind = 'View',
                Sys.Views.Name As TableOrView_Name , 
                Sys.Views.Object_Id As TableOrView_Object_Id ,
                Sys.Triggers.Name As Trigger_Name, 
                Sys.Triggers.Object_Id As Trigger_Object_Id 
            From Sys.Views 
            INNER Join Sys.Triggers On ( Sys.Triggers.Parent_id = Sys.Views.Object_Id )
            Where ( Sys.Views.Is_MS_Shipped = 0 )
        ),
        AllObject
        AS
        (
            SELECT * FROM TableTrigger

            Union ALL

            SELECT * FROM ViewTrigger
        )


    Select 
        * 
    From AllObject
    Order By Object_Kind, Table_Object_Id 
1
select t.name as TriggerName,m.definition,is_disabled 
from sys.all_sql_modules m 
inner join  
sys.triggers t
on m.object_id = t.object_id 
inner join sys.objects o
on o.object_id = t.parent_id
Where o.name = 'YourTableName'

Dadurch erhalten Sie alle Auslöser einer angegebenen Tabelle.

0

wählen Sie * aus information_schema.TRIGGERS aus.

0
Mrinal

Viel einfache Abfrage unten

select (select [name] from  sys.tables where [object_id] = tr.parent_id ) as TableName ,*  from sys.triggers tr
0

sie können Ihren Trigger mit sp_helptext yourtriggername öffnen

0
danish

Versuchen Sie zu verwenden:

select * from sys.objects where type='tr' and name like '%_Insert%'
0
Fezal halai

Sie können alle Trigger für Ihre Datenbank anzeigen, indem Sie die folgende Abfrage ausführen

select * from sys.triggers

Und für den offenen Trigger können Sie die folgende Syntax verwenden

sp_helptext 'dbo.trg_InsertIntoUserTable'
0
Anuj Kumar