Recuperare informazioni sui trigger DML
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Questo argomento illustra come ottenere informazioni sui trigger DML in SQL Server usando 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'articolo
Prima di iniziare:
Per ottenere informazioni sui trigger DML utilizzando:
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 altre informazioni, vedere Metadata Visibility Configuration.
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 hanno una delle autorizzazioni seguenti: ALTER, CONTROL, TAKE OWNERSHIP o VIEW DEFINITION. Queste autorizzazioni sono assegnate implicitamente ai membri dei ruoli predefiniti del database db_owner, db_ddladmine db_securityadmin .
sys.sql_expression_dependencies
Sono richieste l'autorizzazione VIEW DEFINITION sul database e l'autorizzazione SELECT su sys.sql_expression_dependencies per il database. L'autorizzazione SELECT è concessa per impostazione predefinita 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.
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 ed 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 ed 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, Tipoe Tipo dipendenza .
Per chiudere la finestra Dipendenze oggetto fare clic su OK.
Utilizzo di Transact-SQL
Per visualizzare la definizione di un trigger DML
Connettersi al motore di database di.
Dalla barra Standard fare clic su Nuova query.
Copiare e incollare uno degli esempi seguenti nella finestra della query, quindi fare clic su Esegui. In ogni esempio viene illustrato come visualizzare la definizione del trigger
iuPerson
.
USE AdventureWorks2022;
GO
SELECT definition
FROM sys.sql_modules
WHERE object_id = OBJECT_ID(N'Person.iuPerson');
GO
USE AdventureWorks2022;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition;
GO
USE AdventureWorks2022;
GO
EXEC sp_helptext 'Person.iuPerson'
GO
Per visualizzare le dipendenze di un trigger DML
Connettersi al motore di database di.
Dalla barra Standard fare clic su Nuova query.
Copiare e incollare uno degli esempi seguenti nella finestra della query, quindi fare clic su Esegui. In ogni esempio viene illustrato come visualizzare le dipendenze del trigger
iuPerson
.
USE AdventureWorks2022;
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,
o.type_desc AS referencing_description,
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 di.
Dalla barra Standard fare clic su Nuova query.
Copiare e incollare uno degli esempi seguenti nella finestra della query, quindi fare clic su Esegui. In ogni esempio viene illustrato come visualizzare informazioni sui trigger DML (
TR
) nel database.
USE AdventureWorks2022;
GO
SELECT name, parent_id, create_date, modify_date, is_instead_of_trigger
FROM sys.triggers
WHERE type = 'TR';
GO
USE AdventureWorks2022;
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 AdventureWorks2022;
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 di.
Dalla barra Standard fare clic su Nuova query.
Copiare e incollare uno degli esempi seguenti nella finestra della query, quindi fare clic su Esegui. In ogni esempio viene illustrato come visualizzare gli eventi che attivano il trigger
iuPerson
.
USE AdventureWorks2022;
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 AdventureWorks2022;
GO
SELECT object_id, type,is_first, is_last
FROM sys.trigger_events
WHERE object_id = OBJECT_ID('Person.iuPerson');
GO
Vedi anche
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)