T-Sql

Primi e Ultimi Trigger

Sergio Govoni

Qualora una tabella avesse molteplici trigger AFTER sullo stesso tipo di comando INSERT, UPDATE o DELETE, vi siete mai chiesti quale fosse l’ordine di attivazione?

Scenario

Ipotizziamo di utilizzare la tabella dbo.Product su cui insistono alcuni (tre) trigger AFTER di tipo INSERT. Con il seguente frammento di codice T-SQL eseguiamo il setup della tabella dbo.Product sul database di esempio AdventureWorks.

use [AdventureWorks];
go

-- Setup table dbo.Product
if OBJECT_ID('dbo.Product', 'U') is not null
  drop table dbo.Product;
go

create table dbo.Product
(
  ProductID varchar(25) not null
  ,LocationID varchar(20) not null
  ,Quantity decimal(9, 2) not null
  ,ModifiedDate date not null default getdate()
  ,Status bit not null default 1
  ,constraint PK_Product_ProductID_LocationID primary key(ProductID, LocationID)
);
go

Dopo aver definito la struttura della tabella dbo.Product eseguiamo la creazione dei trigger di tipo INSERT, per semplicità ogni trigger eseguirà il PRINT di un messaggio informativo che ci permetterà di analizzare l’ordine di attivazione.

PASS Summit 2010

Davide Mauri

Si rinnova l’appuntamento con il PASS Summit 2010, la più grande ed importante conferenza mondiale con SQL Server! Un’occasione unica di formazione e di crescita professionale: tutti i più rinomati speaker modiali si troveranno lì…non mancare!

  • 160 Sessioni
  • 2 Giorni di seminari Pre e Post conference
  • Networking con migliaia di esperti, MVP, persone del team di sviluppo e del SQL CAT
  • Ask The Experts

A tutto questo aggiungete che tutti i membri di UGISS potranno beneficiare di uno sconto di 200$ (duecento dollari), che non è cosa da tutti i giorni! :)

Free SQL Server DMV Starter Pack

Sergio Govoni

Dal sito Red-Gate è possibile scaricare gratuitamente l’eBook SQL Server DMV Starter Pack che consiste di 84 pagine dedicate alla descrizione dei diversi tipi di DMV e di come possono essere utilizzati con SQL Server.

Con il libro viene fornito anche il codice T-SQL utilizzato negli esempi, in modo da poter utilizzare le DMV immediatamente.

Le performance dell’istanza SQL Server sono una preoccupazione costante.. specialmente per i DBA

Buona lettura!

MERGE and Triggers

Sergio Govoni

Abbiamo parlato del comando MERGE nell’articolo MERGE Statements in Action, ora invece tratteremo un approfondimento che ci permetterà di comprendere le regole di attivazione degli eventuali trigger presenti nella tabella target, oggetto delle operazioni DML specificate nelle clausole del comando MERGE.

L’esecuzione delle azioni specificate nelle clausole del comando MERGE scatena l’attivazione dei trigger come una qualsiasi operazione DML. Esiste però una particolarità interessante: verrà scatenata una sola occorrenza di ogni trigger, in risposta al comando MERGE, anche in presenza di esecuzioni multiple della stessa azione da parte di quest’ultimo. Come sempre, i trigger avranno accesso alle tabelle virtuali inserted e deleted che conterranno tutte le righe modificate dallo statement.

FILESTREAM Attribute

Sergio Govoni

Tra le numerose novità introdotte con SQL Server 2008 troviamo anche il nuovo attributo FILESTREAM che integra l’intelligenza del query processor di SQL Server con l’immediatezza del file system per la memorizzazione di file di grandi dimensioni.

Quante volte ci siamo chiesti dove fosse meglio memorizzare file di grandi dimensioni, come ad esempio file video, multimediali o semplicemente documenti nei formati Microsoft Office. Fondamentalmente due le possibili soluzioni: nel file system oppure all’interno del DB, in colonne di tipo BLOB (Binary Large Object). Da qui l’analisi dei vantaggi e degli svantaggi di ognuna delle due soluzioni, ma in entrambi i casi, comunque, abbiamo dovuto accettare gli svantaggi della soluzione scelta. Probabilmente, il più delle volte abbiamo scelto di tenere fuori dal DB i dati non strutturati per evitare ad esempio file di backup di dimensioni elevate, a discapito però della semplicità di gestione e accettando limitazioni nelle funzionalità di flusso.