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.
[Top]
Utilizzo di SQL Server Management Studio
Per visualizzare la definizione di un trigger DML
In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espanderla.
Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger di cui si desidera visualizzare la definizione.
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
In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espanderla.
Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger e le relative dipendenze che si desidera visualizzare.
Espandere Trigger, fare clic con il pulsante destro del mouse sul trigger desiderato, quindi scegliere Visualizza dipendenze.
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.
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.
Per chiudere la finestra Dipendenze oggetto fare clic su OK.
[Top]
Utilizzo di Transact-SQL
Per visualizzare la definizione di un trigger DML
Connettersi al Motore di database.
Dalla barra Standard fare clic su Nuova query.
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
Connettersi al Motore di database.
Dalla barra Standard fare clic su Nuova query.
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
Connettersi al Motore di database.
Dalla barra Standard fare clic su Nuova query.
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
Connettersi al Motore di database.
Dalla barra Standard fare clic su Nuova query.
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
[Top]
Vedere anche
Riferimento
DISABLE TRIGGER (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)