Forex 

 scommesse sportive
Offrimi un caffè o una birra!

Feed RSS

feed image
Trigger DDL in SQL Server 2005 PDF Stampa E-mail
Valutazione attuale: / 0
ScarsoOttimo 


SQL Server 2000 utilizzava i trigger. Un trigger è una particolare forma di Stored Procedure che viene attivata in automatico quando si verifica una operazione di INSERT, UPDATE o DELETE su una tabella. Il trigger risponde all'azione, dopo che l'azione è stata eseguita, ed è in grado di eseguire qualsiasi azione (supportata dal linguaggio Transact-SQL) e anche di fare un ROLLBACK della transazione che lo ha scatenato.

I trigger fino a SQL Server 2000 erano quindi essenzialmente legati a istruzioni di tipo DML (Data Manipulation Language)

SQL Server 2005 introduce i Trigger DDL. Un Trigger DDL è un trigger in grado di rispondere ad azioni di tipo Data Definition Language, cioè di scatenarsi quando si verificano delle operazioni di CREATE, ALTER o DROP. In parole povere, è possibile scatenare una operazione quando viene creato, modificato o eliminato un "oggetto" nel Database (Tabelle, Viste, Strored Procedures etc.)

Il Trigger DDL espone tutti i dati relativi all'evento scatenante per mezzo di una funzione, chiamata eventdata() che contiene, sotto forma di XML, tutti i dettagli dell'evento. La funzione eventdata() fornisce un risultato tipo questo:

<EVENT_INSTANCE>
<EventType>CREATE_TABLE</EventType>
<PostTime>2007-07-25T21:44:27.267</PostTime>
<SPID>52</SPID>
<ServerName>MyServer</ServerName>
<LoginName>MyServer\User01</LoginName>
<UserName>dbo</UserName>
<DatabaseName>HotelList</DatabaseName>
<SchemaName>dbo</SchemaName>
<ObjectName>Hotels</ObjectName>
<ObjectType>TABLE</ObjectType>
<TSQLCommand>
<SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE"/>
<CommandText>create table Hotels(name varchar(50),
address varchar(30), stars int)</CommandText>
</TSQLCommad>
</EVENT_INSTANCE>

 

Questo frammento contiene tutto ciò che possiamo voler sapere sull'evento: EventType è il tipo di evento che ha fatto partire il Trigger, PostTime la data e l'ora dell'evento, ServerName il Server, LoginName la Login del nostro utente, TSQLCommand contiene i dettagli del comando che è stato eseguito etc.

E' quindi sufficiente fare un parsing del frammento XML restituito dalla eventdata() per poter estrarre le informazioni necessarie. In questo caso ci viene in aiuto la funzione value che è possibile usare su variabili XML in SQL Server 2005, come nell'esempio seguente (clicca per ingrandire):

 

Trigger DDL

 

 

 






Aggiungi ai siti di Social Bookmarking
Digg! Reddit! Del.icio.us! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
 

Aggiungi commento

N.B. Non sempre riesco a rispondere ai commenti, soprattutto per richieste di aiuto e problemi tecnici. Mi piacerebbe avere tempo di rispondere a tutti, ma siete tanti e il tempo purtroppo è poco...

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:
Bold Italico Sottolineato Quota


Codice di sicurezza
Aggiorna