Recuperare informazioni sui trigger DML

Si applica a:SQL ServerDatabase SQL di AzureIstanza 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

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 un utente è proprietario o a cui l'utente ha concesso alcune 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

  1. In Esplora oggetti connettersi a un'istanza del motore di database ed 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 ed 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, Tipoe Tipo dipendenza .

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

Utilizzo di Transact-SQL

Per visualizzare la definizione di un trigger DML

  1. Connettersi al motore di database di .

  2. Dalla barra Standard fare clic su Nuova query.

  3. 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

  1. Connettersi al motore di database di .

  2. Dalla barra Standard fare clic su Nuova query.

  3. 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_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 di .

  2. Dalla barra Standard fare clic su Nuova query.

  3. 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

  1. Connettersi al motore di database di .

  2. Dalla barra Standard fare clic su Nuova query.

  3. 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)