Condividi tramite


Ottieni informazioni sui trigger DML

In questo argomento viene descritto come ottenere informazioni sui trigger DML in SQL Server 2012 utilizzando SQL Server Management Studio o Transact-SQL. Queste informazioni possono includere i tipi di trigger in una tabella, nonché il nome, il proprietario e la data di creazione o modifica di un trigger. Se il trigger non è stato crittografato al momento della creazione, se ne ottiene la definizione. È possibile utilizzare la definizione per comprendere gli effetti del trigger sulla tabella su cui è stato definito. È inoltre possibile rilevare gli oggetti utilizzati da un trigger specifico. Con queste informazioni, è possibile identificare gli oggetti che influiscono sul trigger qualora vengano modificati o eliminati dal database.

Contenuto dell'argomento

  • Prima di iniziare:

    Sicurezza

  • Per ottenere informazioni sui trigger DML utilizzando:

    SQL Server Management Studio

    Transact-SQL

Prima di iniziare

Sicurezza

Autorizzazioni

  • sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
    La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui l'utente è proprietario o per le quali dispone di autorizzazioni. Per ulteriori informazioni, vedere Configurazione della visibilità dei metadati.

  • OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
    È richiesta l'appartenenza al ruolo public. La definizione degli oggetti utente è visibile al proprietario degli oggetti o agli utenti autorizzati che dispongono di una delle autorizzazioni seguenti: ALTER, CONTROL, TAKE OWNERSHIP o VIEW DEFINITION. Queste autorizzazioni sono implicitamente assegnate ai membri dei ruoli predefiniti del database db_owner, db_ddladmin e db_securityadmin.

  • sys.sql_expression_dependencies
    Sono richieste l'autorizzazione VIEW DEFINITION per il database e l'autorizzazione SELECT per sys.sql_expression_dependencies per il database. Per impostazione predefinita, l'autorizzazione SELECT viene concessa solo ai membri del ruolo predefinito del database db_owner. Quando le autorizzazioni SELECT e VIEW DEFINITION vengono concesse a un altro utente, l'utente autorizzato può visualizzare tutte le dipendenze nel database.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di SQL Server Management Studio

Per visualizzare la definizione di un trigger DML

  1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espanderla.

  2. Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger di cui si desidera visualizzare la definizione.

  3. Espandere Trigger, fare clic con il pulsante destro del mouse sul trigger desiderato, quindi scegliere Modifica. La definizione del trigger DML viene visualizzata nella finestra Query.

Per visualizzare le dipendenze di un trigger DML

  1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espanderla.

  2. Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger e le relative dipendenze che si desidera visualizzare.

  3. Espandere Trigger, fare clic con il pulsante destro del mouse sul trigger desiderato, quindi scegliere Visualizza dipendenze.

  4. Nella finestra di dialogo Dipendenze oggetto selezionare Oggetti che dipendono da <nome trigger DML> per visualizzare gli oggetti che dipendono dal trigger DML. Gli oggetti vengono visualizzati nell'area Dipendenze.

    Per visualizzare gli oggetti da cui dipende il trigger DML, selezionare Oggetti da cui dipende <nome trigger DML>. Gli oggetti vengono visualizzati nell'area Dipendenze. Espandere ogni nodo per visualizzare tutti gli oggetti.

  5. Per ottenere informazioni su un oggetto visualizzato nell'area Dipendenze, fare clic sull'oggetto. Nel campo Oggetto selezionato le informazioni vengono fornite nelle caselle Nome, Tipo e Tipo dipendenza.

  6. Per chiudere la finestra Dipendenze oggetto fare clic su OK.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di Transact-SQL

Per visualizzare la definizione di un trigger DML

  1. Connettersi al Motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare uno degli esempi seguenti nella finestra Query, quindi scegliere Esegui. In ogni esempio viene illustrato come visualizzare la definizione del trigger iuPerson.

USE AdventureWorks2012;
GO
SELECT definition 
FROM sys.sql_modules
WHERE object_id = OBJECT_ID(N'Person.iuPerson'); 
GO

USE AdventureWorks2012; 
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition; 
GO

USE AdventureWorks2012; 
GO
EXEC sp_helptext 'Person.iuPerson'
GO

Per visualizzare le dipendenze di un trigger DML

  1. Connettersi al Motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare uno degli esempi seguenti nella finestra Query, quindi scegliere Esegui. In ogni esempio viene illustrato come visualizzare le dipendenze del trigger iuPerson.

USE AdventureWorks2012; 
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name, 
    o.type_desc AS referencing_desciption, 
    COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, 
    referencing_class_desc, referenced_class_desc, 
    referenced_server_name, referenced_database_name, referenced_schema_name, 
    referenced_entity_name, 
    COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name, 
    is_caller_dependent, is_ambiguous
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
WHERE referencing_id = OBJECT_ID(N'Person.iuPerson'); 
GO

Per visualizzare informazioni sui trigger DML nel database

  1. Connettersi al Motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare uno degli esempi seguenti nella finestra Query, quindi scegliere Esegui. In ogni esempio viene illustrato come visualizzare informazioni sui trigger DML (TR) nel database.

USE AdventureWorks2012; 
GO
SELECT  name, parent_id, create_date, modify_date, is_instead_of_trigger
FROM sys.triggers
WHERE type = 'TR'; 
GO

USE AdventureWorks2012; 
GO
SELECT  name, object_id, schema_id, parent_object_id, type_desc, create_date, modify_date, is_published
FROM sys.objects
WHERE type = 'TR'; 
GO

USE AdventureWorks2012; 
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger'); 
GO

Per visualizzare informazioni sugli eventi che attivano un trigger DML

  1. Connettersi al Motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare uno degli esempi seguenti nella finestra Query, quindi scegliere Esegui. In ogni esempio viene illustrato come visualizzare gli eventi che attivano il trigger iuPerson.

USE AdventureWorks2012; 
GO
SELECT object_id, type, type_desc, is_trigger_event, event_group_type, event_group_type_desc 
FROM sys.events
WHERE object_id = OBJECT_ID('Person.iuPerson'); 
GO

USE AdventureWorks2012; 
GO SELECT object_id, type,is_first, is_last
FROM sys.trigger_events
WHERE object_id = OBJECT_ID('Person.iuPerson'); 
GO

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Vedere anche

Riferimento

CREATE TRIGGER (Transact-SQL)

DROP TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_rename (Transact-SQL)

ALTER TRIGGER (Transact-SQL)

sp_help (Transact-SQL)

sp_helptrigger (Transact-SQL)

sys.triggers (Transact-SQL)

sys.trigger_events (Transact-SQL)

sys.sql_modules (Transact-SQL)

sys.assembly_modules (Transact-SQL)

sys.server_triggers (Transact-SQL)

sys.server_trigger_events (Transact-SQL)

sys.server_sql_modules (Transact-SQL)

sys.server_assembly_modules (Transact-SQL)

OBJECTPROPERTY (Transact-SQL)

OBJECT_DEFINITION (Transact-SQL)