Ottenere Informazioni Su Trigger DML

  • Articolo
  • 12/17/2021
  • 4 minuti a leggere
    • M
    • r
    • c
    • p
questa pagina è stata utile?

Grazie.

Si applica a: yes SQL Server (tutte le versioni supportate)  Sì Database SQL di Azure

Questo argomento descrive come ottenere informazioni sui trigger DML in SQL Server utilizzando SQL Server Management Studio o Transact-SQL. Queste informazioni possono includere i tipi di trigger in una tabella, il nome di un trigger, il suo proprietario e la data in cui è stato creato o modificato. Se il trigger non è stato crittografato quando è stato creato, si ottiene la definizione del trigger. È possibile utilizzare la definizione per capire in che modo un trigger influisce sulla tabella su cui è definito. Inoltre, puoi scoprire gli oggetti utilizzati da un trigger specifico. Con queste informazioni, è possibile identificare gli oggetti che influenzano il trigger se vengono modificati o eliminati nel database.

In Questo Argomento

  • Prima di iniziare:

    Sicurezza

  • Per ottenere informazioni sui trigger DML, utilizzando:

    SQL Server Management Studio

    Transact-SQL

Prima di Iniziare

Sicurezza

Permessi

sys.sql.moduli, sys.oggetto, sys.trigger, sys.eventi, sys.trigger_events
La visibilità dei metadati nelle viste del catalogo è limitata alle securables di cui un utente è proprietario o su cui è stata concessa l’autorizzazione. Per ulteriori informazioni, vedere Configurazione della visibilità dei metadati.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Richiede l’appartenenza al ruolo pubblico. La definizione di oggetti utente è visibile al proprietario dell’oggetto o ai beneficiari che dispongono di una delle seguenti autorizzazioni: MODIFICA, CONTROLLO, PROPRIETÀ o DEFINIZIONE VISTA. Queste autorizzazioni sono implicitamente detenute dai membri dei ruoli di database fissi db_owner, db_ddladmin e db_securityadmin.

sys.sql_expression_dependencies
Richiede l’autorizzazione alla DEFINIZIONE della VISTA sul database e SELEZIONARE l’autorizzazione su sys.sql_expression_dependencies per il database. Per impostazione predefinita, l’autorizzazione SELECT viene concessa solo ai membri del ruolo database fisso db_owner. Quando le autorizzazioni SELECT e VIEW DEFINITION vengono concesse a un altro utente, il beneficiario 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 di Motore di database e quindi espandere tale istanza.

  2. Espandere il database desiderato, espandere le tabelle e quindi espandere la tabella che contiene il trigger per il quale si desidera visualizzare la definizione.

  3. Espandi Trigger, fai clic con il pulsante destro del mouse sul trigger desiderato, quindi fai clic su 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 di Motore di database e quindi espandere tale istanza.

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

  3. Espandi Trigger, fai clic con il pulsante destro del mouse sul trigger desiderato, quindi fai clic su Visualizza dipendenze.

  4. Nella finestra Dipendenze oggetto, per visualizzare gli oggetti che dipendono dal trigger DML, selezionare Oggetti che dipendono da <Nome trigger DML>. Gli oggetti vengono visualizzati nell’area Dipendenze.

    Per visualizzare gli oggetti da cui dipende il DML, selezionare gli Oggetti da cui dipende < Nome trigger DML>. Gli oggetti vengono visualizzati nell’area Dipendenze. Espandi ogni nodo per vedere 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 di 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.

  2. Dalla barra standard, fare clic su Nuova query.

  3. Copiare e incollare uno dei seguenti esempi nella finestra query e fare clic su Esegui. Ogni esempio mostra come è possibile 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 dei seguenti esempi nella finestra query e fare clic su Esegui. Ogni esempio mostra come è possibile visualizzare le dipendenze di iuPerson trigger.

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 le 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 dei seguenti esempi nella finestra query e fare clic su Esegui. Ogni esempio mostra come è possibile visualizzare le 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 le 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 dei seguenti esempi nella finestra query e fare clic su Esegui. Ogni esempio mostra come è possibile 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 

Vedi Anche

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ATTIVARE TRIGGER (Transact-SQL)
DISATTIVARE i TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.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)
sys.server_assembly_modules (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)

Write a Comment

Il tuo indirizzo email non sarà pubblicato.