Attribution-NonCommercial-ShareAlike SQL Server Denali CTP3 Sequence User Group Italiano SQL Server Danilo Dominici
Speaker +15 anni su SQL Server –Consulente e docente –Disegno, amministrazione, tuning di SQL Server dalla versione 6.5 –MCSE, MCAD, MCDBA, MCITP, MCT –Microsoft Community Contributor Award 2011 Dal 2004 DBA in Regione Marche, VMWare administrator Collaborazione attiva con UGISS –Speaker e autore Danilo Dominici 2 UGISS - User Group Italiano SQL Server
Agenda Loggetto SEQUENCE –Che cosè –Come si usa –CACHE e prestazioni –Scenari duso 3 UGISS - User Group Italiano SQL Server
SEQUENCE E un generatore di numeri (ANSI standard) Indipendente, legato ad uno schema, non ad altri oggetti del db Può essere usato come la IDENTITY specificando NEXT VALUE FOR come valore di default del campo Al contrario della proprietà IDENTITY però: –Può essere utilizzata direttamente da T-SQL –E indipendente dalla tabella che lo utilizza –Può essere usata contemporaneamente da più tabelle (o campi) del database Che cosè 4 UGISS - User Group Italiano SQL Server
SEQUENCE Con il comando CREATE SEQUENCE Ad esempio: CREATE SEQUENCE dbo.MySequence START WITH 1 INCREMENT BY 1; Posso definire in che modo generare la sequenza di valori: –Allinterno di un range specificato (min e max) –Ascendente o discendente (incremento negativo) –Valore iniziale (può essere diverso dal valore minimo) –Ciclica Come si crea 5 UGISS - User Group Italiano SQL Server
SEQUENCE Come si crea 6 UGISS - User Group Italiano SQL Server Da SSMS
SEQUENCE Richiedendo un valore singolo Attraverso la funzione NEXT VALUE FOR –Restituisce il prossimo valore numerico della sequenza –Può essere usata in stored procedure, trigger, default Maggiori info sul BOL Come si usa 7 UGISS - User Group Italiano SQL Server
SEQUENCE Richiedendo un pool di valori Attraverso la stored proc sp_sequence_get_range –Accetta come parametri il nome della sequenza ed il numero di valori da assegnare –Restituisce nei parametri di output (opzionali) il primo e lultimo valore, il numero di cicli già compiuti, i valori di incremento, minimo e massimo impostati per la sequenza –Da usare quando alla mia applicazione servono n valori sequenziali tutti insieme Maggiori info sul BOL Come si usa 8 UGISS - User Group Italiano SQL Server
SEQUENCE Tramite lopzione CACHE possiamo richiedere luso della cache e modificarne la dimensione Serve a migliorare le prestazioni minimizzando lI/O su disco –Se non specificata, la dimensione di default è di 50 valori (nella CTP3, potrebbe cambiare nella RTM) –In realtà SQL Server mantiene due soli numeri: il valore corrente ed il numero di valori rimasti in cache E un estensione di SQL Server allo standard ANSI E possibile specificare NO CACHE, ma ogni volta che si richiede un valore, SQL Server deve aggiornare le tabelle di sistema Caching e prestazioni 9 UGISS - User Group Italiano SQL Server
SEQUENCE Quando usare SEQUENCE ? –Lapplicazione richiede un numero prima di fare la INSERT –Più tabelle (o colonne) devono condividere la stessa numerazione –La numerazione deve ricominciare al raggiungimento del limite –I valori della sequenza devono essere generati ordinandoli sulla base di un altro campo della tabella –Lapplicazione richiede un range di valori preassegnati –Occorre modificare a runtime le specifiche della sequenza (es. cambiarne il valore di incremento) Scenari di utilizzo 10 UGISS - User Group Italiano SQL Server
SEQUENCE Limitazioni –Nessuna protezione da UPDATE –Univocità non garantita by design –Nessun controllo sullutilizzo dei valori generati –Se creata con lopzione CACHE, in caso di shutdown improvviso si possono creare buchi nella numerazione Scenari di utilizzo 11 UGISS - User Group Italiano SQL Server
SEQUENCE 12 UGISS - User Group Italiano SQL Server
SEQUENCE Presentazione e demo – Informazioni sul prodotto SQL Server – – Supporto sviluppo ed professionisti IT – – Comunità SQL Server – Newsgroups pubblici via NTTP –microsoft.public.it.sql –microsoft.public.sqlserver.* Newsgroups pubblici via WEB – – Formazione – Risorse Generiche 13 UGISS - User Group Italiano SQL Server
SEQUENCE SQL Server Denali Books On-Line –Sequence numbersSequence numbers –CREATE SEQUENCECREATE SEQUENCE –NEXT VALUE FORNEXT VALUE FOR –sp_sequence_get_rangesp_sequence_get_range –sys.sequencessys.sequences Articoli magazines –SQL Server Magazine - Itzik Ben-Gan (parte 1)SQL Server Magazine - Itzik Ben-Gan (parte 1) –SQL Server Magazine - Itzik Ben-Gan (parte 2)SQL Server Magazine - Itzik Ben-Gan (parte 2) Blogs –Sergio Govoni (SQL Server MVP)Sergio Govoni (SQL Server MVP) –Aaron Bertrand (SQL Server MVP)Aaron Bertrand (SQL Server MVP) –SSMA Team Blog - Converting Oracle Sequence using SSMA for Oracle v5.1SSMA Team Blog - Converting Oracle Sequence using SSMA for Oracle v5.1 Risorse Specifiche 14 UGISS - User Group Italiano SQL Server
SEQUENCE Grazie! 15 UGISS - User Group Italiano SQL Server