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.

Automatizzare l'invio di reports utilizzando SSIS e SSRS

Davide Mauri

Scenario

L’azienda XYZ vuole automatizzare l’invio a ciascun agente di reports periodici con l’elenco degli ordini raccolti e le provvigioni spettanti. I reports sono generati tramite SQL Server Reporting Services ed accedono ad un database SQL Server. L’invio dei reports avviene tramite email.

Soluzione

La soluzione proposta utilizza SQL Server Integration Services, che si occupa di reperire le informazioni sugli agenti (Codice, Cognome e Nome, Email, Provvigione %), di lanciare un custom task che genera il report in formato pdf e lo memorizza nella cartella dell’agente ed infine di inviare per email il report prodotto a ciascun agente.

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.