T-Sql

GO ed escuzioni multiple della stessa istruzione

Davide Mauri

Il comando GO che utilizziamo per separare in batch le istruzioni TSQL può essere associato ad un valore numerico.
A cosa server tale valore?
A far eseguire N volte le istruzioni contenute nel batch.

Ovvero scrivendo un’istruzione come:

PRINT ‘ciao’
GO 3

Otteniamo questo risultato:

Beginning execution loop
ciao
ciao
ciao
Batch execution completed 3 times.

La cosa si fa interessante in tutti quegli scenari in cui abbiamo la necessità di popolare alcune tabelle con dati di test o di prova.
Qualcosa del genere:

Una colonna IDENTITY ammette valori duplicati? e valori negativi?

Davide Mauri

Sono due tipici dubbi, il secondo dei quali è causato, probabilmente, dal fatto che una colonna IDENTITY viene usata solitamente come PRIMARY KEY di tabella, assicurando come tale l’univocità dei valori in colonna.

La risposta è “Sì” ad entrambe le domande. Nel caso di valori negativi fanno eccezione ovviamente le colonne di tipo TINYINT (che ammette numeri interi da 0 a 255). Inoltre, il fatto di ammettere valori negativi, può tornare utile in quanto possiamo ottimizzare l’utilizzo del range di valori ammessi dal tipo di dato con cui definiamo la colonna. Per esempio, per un SMALLINT (che occupa 2 byte e ammette da -32.768 a 32.767) possiamo “sfruttare” completamente tale range partendo proprio dal suo limite inferiore di -32.768

Una Piattaforma Integrata

Davide Mauri
27 Febbraio 2007 c/o Microsoft Italia Centro Direzionale San Felice Palazzo A Via Rivoltana, 13 - Segrate Come promesso nei passati eventi, quest’anno ci concentreremo maggiormente su ciò che ruota attorno al motore relazionale di SQL Server 2005. Come primo evento dell’anno, quindi, ecco una succulenta giornata dove si inizierà a toccare con mano tutto ciò che nel DVD di installazione di SQL Server viene fornito. E come vedremo le funzionalità sono davvero tante e molto molto interessanti. Cosi tante ed interessanti da poter tranquillamente definire SQL Server 2005, nella sua globalità, una piattaforma per lo sviluppo, la gestione e la fruzione di soluzioni data-centriche. Oltre a questo avremo modo anche di proseguire il tema della modellazione, che in questo evento inizia a toccare un punto molto delicato e fondamentale: la gestione di dati “temporali”, ossia che variano nel tempo. Ci sarà anche una sessione “a sorpresa” dove si potrà vedere come l’adozione dell’intera piattaforma SQL Server 2005 può semplificare di molto lo sviluppo di soluzioni altrimenti molto complesse. Se fossi in voi non mi perderei questo evento per nulla al mondo…ed ovviamente vi aspettiamo numerosi! Informazioni Logistiche: Come raggiungere la sede: http://www.microsoft.com/italy/info/visit.aspx Se raggiungerà l’evento con mezzi propri, la informiamo che il parcheggio della sede Microsoft non è più disponibile, potrà quindi lasciare la sua auto presso un parcheggio appositamente organizzato con servizio continuativo di navetta in andata e ritorno Si tratta del parcheggio del Luna Park Novegro, via Rivoltana 64, proseguimento di via Corelli. Agenda: 09.15 - 10.00 :Registrazione                              10.00 - 11.15 :[DBA & DBD] Database & Time-Dependent Data(Speaker: Gianluca Hotz)    11.15 - 12:30[DBA & DBD] Case Study(Speaker: Davide Mauri e Alessio Bibolotti - Sirti)Il case study di una soluzione reale compeltamente basata sulla piattaforma SQL Server 2005. Grazie a questa sessione potremo capire come la l’utilizzo integrato di diversi elementi della piattaforma, in questo caso Notification Services, SQLXML, SQLCLR e Reporting Services, permette la creazione di soluzioni di medio/alta complessita in tempi brevi e con un alto grado di personalizzazione. Il tutto senza perdere di vista le necessità di una soluzioni enterprise e quindi il monitoring e la reportistica.L’approcio di queste sessioni “Case Study” è architetturale con brevi approfondimenti tecnici, ed è quindi adatto a tutti, sviluppatori, amministratori, integratori, project manager e decision maker. L’idea è quella di poter dare una visione di ampio respiro di quello che la piattaforma SQL Server 2005 può fare in completa autonomia, cosi da poter capire e toccare con mano le potenzialità di quello che ci portiamo in casa una volta che acquistiamo SQL Server 2005.    12.30 - 13.45Pranzo      Track Database AdministratorTrack Database Developer    13.45 - 15.00PowerShell & SQL Server: L’integrazione del futuro(Speaker: Claudio Galletti)Con l’introduzione di Windows PowerShell, Microsoft ha cambiato drasticamente il pradigma della Command Line Interface (CLI) e di scripting per gli amministratori di sistema. In questa sessione introduttiva, ricapitoleremo le caratteristiche dell’ambiente e del linguaggio di scripting, la configurazione e personalizzazione della shell e vedremo alcune tecniche specifiche per l’interazione con SQL Server 2005.Dopo una prima parte più generica su PowerShell (l’architettura, il linguaggio, i profili, ecc.), vedremo come interagire con i servizi di SQL, con gli eventi di sistema generati dai servizi SQL, introdurremo i SQL Server Management Objects con alcuni esempi pratici legati al backup, e l’estrapolazione di dati via scipt e ADO.Net. Obiettivo della sessione è trasferire alcune conoscenze di base sull’ambiente e al tempo stesso vedere le possibili applicazioni di questa nuova tecnologia, al supporto e amministrazione in ambienti SQL Server 2005.Integration Services(Speaker: Davide Mauri)Con la versione 2005 molti strumenti si sono evoluti, ma alcuni hanno subito una vera e proprio rivoluzione. Tra questi troviamo gli Integration Services, i successori dei DTS, ora completamente ridisegnati per superare tutti i limiti che quest’ultimi mostravano e ora completamente integrati con il .NET Framework. In questo webcast vedremo come sfruttare tutte le potenzialità che i Sql Server Integration Services (SSIS) mettono a disposizione per risolvere le problematiche legate all’integrazione di dati ed ai processi di Extract, Transform & Load (ETL). In questa prima sessione prenderemo conoscenza dello strumento, e di iniziaremo a sviluppare i primi semplici (ma non troppo) package.    15.00 - 16.15Repliche - Parte 1(Speaker: Marcello Poletti)Le repliche di sql server sono uno strumento potente in grado di mantenere sincronizzati database remoti. Questo strumento si rivela tuttavia molto spesso piuttosto complesso e irto di trappole. Si affronteranno le tre tipologie di replica offerte da SQL Server in una lunga sessione teorica e pratica cercando di analizzare gli scenari reali di utilizzo e le principali difficoltà di implementazione.Reporting Services(Speaker: Andrea Benedetti)I Reporting Services sono, nell’intera architettura di SQL Server, la piattaforma principe di presentazione dell’informazione, completamente integrata ed estendibile. In questa sessione cominceremo a vedere una panoramica dei suo servizi, le nuove caratteristiche introdotte con la nuova versione, come poter sviluppare e pubblicare report fino vedere come poter utilizzare il .Net Framework per estenderne le funzionalità    16.15 - 16.45Coffee Break     16.45 - 18.00Repliche - Parte 2(Speaker: Marcello Poletti)Le repliche di sql server sono uno strumento potente in grado di mantenere sincronizzati database remoti. Questo strumento si rivela tuttavia molto spesso piuttosto complesso e irto di trappole. Si affronteranno le tre tipologie di replica offerte da SQL Server in una lunga sessione teorica e pratica cercando di analizzare gli scenari reali di utilizzo e le principali difficoltà di implementazione.Analysis Services(Speaker: Franco Perduca)Introduzione al motore multidimensionale di Microsoft; utilizzando un caso pratico vedremo quelle che sono i vantaggi e le features che una soluzione basata su Analysis Services ci puo’ dare.Come ultimo elemento non tralasceremo anche la parte client con Excel 12 , Proclarity e Reporting Services    E’ possibile effettuare il download di tutto il materiale dal sito Community: http://community.ugiss.org/files/folders/workshop_20070227/default.aspx  Per ogni informazione scriveteci all’indirizzo info@ugiss.org

Risoluzione Deadlock su Tabella utilizzata come coda di elaborazione

Davide Mauri

Esigenza:

Data una struttura di Server costituita da
• una batteria di Web Server che ricevono files di log, li salvano su Disco ed inseriscono un record sulla tabella che viene usata come coda;
• una batteria di Server di Parserizzazione;
• un Database Server.

L’esigenza è quella di caricare su Database il contenuto di una serie di files di Log. I Log vengono caricati tramite Parsers che girano su batterie di servers (da 1 a 16).
Il software di Parserizzazione
• legge la tabella che viene utilizzata come coda;
• prende il nome codificato del file che deve essere elaborato;
• controlla che il file di Log sia formalmente corretto;
• carica il contenuto del File su Database tramite Stored Procedures.