Archivio Posts |
Anno 2018
Anno 2017
Anno 2016
Anno 2015
Anno 2014
Anno 2013
Anno 2012
Anno 2011
Anno 2010
Anno 2009
Anno 2008
Anno 2007
Anno 2006
|
|
INSERT-EXEC innestati, limiti e (imp)possibili workaround
Tempo fa ho ricevuto un errore riguardante lo statement INSERT-EXEC. Il problema, ormai conosciuto, è una limitazione del motore di SQL Server, di certo presente dalla versione 2005. Lo statement in oggetto era supportato anche in 2000 ma non ho mai avuto l'occasione di ottenere lo stesso comportamento. Immagino che la limitazione possa essere presente anche su SQL Server 2000.ScenarioImmaginiamo di avere una stored procedure come questa, che semplicemente torna un resultset:CREATE PROCEDUR Leggi tutto il post...
lunedì, 14 ott 2013 Ore. 09.21
Replicare righe in base a valore di colonna
Oggi è arrivata una richiesta sul forum, replicare i record in base al numero contenuto in una colonna. Diciamo una trasformazione: da una tabella con una riga per ogni chiave, ad una che contiene tante righe per chiave quanto un valore specifica.Devo dire che non è la prima volta che mi trovo domande di questo tipo, quindi ho deciso di scirivere qui una possibile soluzione.Partiamo con la tabella dei "parametri":CREATE TABLE
#ParameterTable
(
ID int NOT NULL PRIMA Leggi tutto il post...
giovedì, 04 lug 2013 Ore. 10.55
SQL Server Programming - Come simulare le costanti?
Nel post precedente, ho parlato di come il motore interpreta le variabili locali, con la possibilità che questo possa anche degradare le performance delle nostre query.In effetti, lavorando anche lato dev, mi rendo conto di come la mancanza di vere e proprie COSTANTI in programmabilità T-SQL si faccia sentire.Ragion per cui mi sono posto un (credo) annoso problema, ovvero: "Come gestire le nostre CONST?".Come dicevamo qui, non è per nulla indicato usare variabili locali, nemmeno all'in Leggi tutto il post...
lunedì, 16 mag 2011 Ore. 01.37
SQL Server programming - Variabili/costanti e Statistiche
Questo post vuole essere un reminder di un comportamento che il Query Processor di Sql Server ha regolarmente quando si parla di variabili locali e costanti (literal).Come sappiamo, SQL Server colleziona un elenco di statistiche che poi serviranno al motore per stabilire quale piano di esecuzione (il migliore secondo la sua analisi interna) applicare nell'esecuzione di ogni query.Queste statistiche inoltre vengono aggiornate di default (a meno che non si cambi il comportamento standard) qualora Leggi tutto il post...
sabato, 30 apr 2011 Ore. 16.31
SQL Server e ROUND function (sembra si tratti di un BUG)
Andando in debug su di una stored procedure abbiamo trovato un simpatico errore di Arithmetic Overflow apparentemente ingiustificato..Provate questo script sul vostro Management Studio e, se sarete fortunati, il tutto andrà per il meglio. In caso contrario otterrete l'errore che da un'ora ci fa incavolare PRINT ROUND(0.1, 0)
PRINT ROUND(0.6, 0)
PRINT ROUND(1.0, 0) ------------------------------------------------------0.0Msg 8115, Level 16, State 2, Line 2Arithmetic overflow error con Leggi tutto il post...
lunedì, 14 mar 2011 Ore. 16.45
SQL Prompt - Funzionalità suggerite
SQL Prompt di red-gate sta diventando ormai fondamentale per scrivere e formattare il mio transact-sql. Sia dal punto di vista delle indentazioni, del case, sia per quanto riguarda l'intellisense che porta con sé, sempre più potente.Ho deciso di provare a partecipare attivamente al forum chiamato "SQL Prompr Feature suggestion" con queste tre piccole idee:Aggiungere un flag per accodare ad ogni statement il punto e virgolaEstrarre uno statement in una funzione tabellareEstrarre da uno statement Leggi tutto il post...
lunedì, 24 gen 2011 Ore. 20.02
SQL Prompt, AAARGH!
Vista l'ora alla quale sto lavorando questo è il post migliore che possa scrivere! Per chi possiede SQL Prompt, provate a fare:yell + INVIO..ecco il risultato:niente di meglio che inveire a quest'ora! pare che alcuni abbiano proprio scritto anche sul forum di red-gateche ridere... grandi!Stay Tuned & AAAAAAAARGGGGHHH! Leggi tutto il post...
giovedì, 01 apr 2010 Ore. 01.31
Come trasformare un IP in un intero
Vi è mai capitato di dover salvare un indirizzo IP (IPv4)?
Come sapete un IP IPv4 è formato da quattro parti numeriche che vanno da 0 a 255 (1 byte) separate da un punto.Se
volessimo salvare l'informazione su una base dati SQL Server potremmo
usare più campi (uno per ogni parte dell'IP) oppure una stringa. Nel primo caso, pensare alle where su 4 campi e ad eventuali criteri di join diventa scomodo.Nel
secondo caso, il campo potrebbe tenere dai 7 (x.x.x.x) ai 15 caratteri
(xxx.xxx.xxx.xxx), Leggi tutto il post...
mercoledì, 24 feb 2010 Ore. 20.18
RESEED di identity, attenzione alla postilla
Come molti di voi sapranno, esiste un Database Console Command (DBCC)
che consente di controllare lo stato di una colonna identity ed
eventualmente di effettuare reseed della stessa.la sintassi è quella definita nei BOL alla voce "DBCC CHECKIDENT (Transact-SQL)":DBCC CHECKIDENT ( table_name [ , { NORESEED | { RESEED [ , new_reseed_value ] } } ])[ WITH NO_INFOMSGS ]Scrivo questo post so Leggi tutto il post...
mercoledì, 23 dic 2009 Ore. 23.45
Intellisense, ti sei dimenticato i sinonimi?
In questi giorni in cui sono veramente occupato a riscrivere codice mi sono imbattuto in un problema abbastanza fastidioso.Siccome piano piano il nostro database di produzione dovrà migrare verso nuovi nomi oggetto (perchè gli attuali sono inutilizzabili, e non mi soffermo) e siccome non mi posso permettere l'esecuzione di una semplice sp_rename, ho dovuto creare un livello in più che mi simulasse la presenza dei nuovi oggetti, lasciando però inalterati gli originali.Di conseguenza, con questo l Leggi tutto il post...
giovedì, 16 lug 2009 Ore. 01.40
Ottenere solo i metadati di una query
Non lo avevo mai usato prima d'ora, ma oggi ho avuto l'occasione di impiegarlo. Sto parlando di FMTONLY.SET FMTONLY (transact-SQL)http://msdn.microsoft.com/en-us/library/ms173839.aspxQuesto flag consente di ritornare al client i soli metadati di una query, senza eseguirla effettivamente.ad esempio, ipotizziamo di avere due tabelle e di voler eseguire una join di questo tipo:USE tempdb;
GO
CREATE TABLE Table1
(
ID int IDENTITY(1,1) NOT NULL Leggi tutto il post...
venerdì, 14 nov 2008 Ore. 13.28
Post sui "buchi" in una sequenza di numeri
Tempo fa ho postato qui una possibile soluzione per ricavare i buchi in una sequenza di numeri.
In maniera più dettagliata, Davide Mauri ci spiega come operare..
date una letta qui
Stay tuned! Leggi tutto il post...
lunedì, 21 mag 2007 Ore. 09.51
Clausola OUTPUT
Avevo già accennato in un mio precedente post l'utilizzo della clausola OUTPUT..
qui di seguito il link su msdnhttp://msdn2.microsoft.com/en-us/library/ms177564.aspx
Si tratta di una possibilità che sql server 2005 ci dà a mio avviso molto importante. Possiamo infatti monitorare quello che abbiamo inserito, modificato o cancellato.
Infatti, la clausola output è disponibile solo per i comandi DML (Data Manipulation Language) e quindi solo per quei comandi che "modificano" il cont Leggi tutto il post...
venerdì, 12 gen 2007 Ore. 11.13
Errata su "Filtro dinamico senza Dynamic SQL"
Come segnalatomi da Lorenzo Benaglia, MVP di SQL Server, devo segnalare una correzione sul precedente post.La tecnica adottata, seppure utile ad aggirare il problema, non è la migliore da utilizzare. Nonostante varie prove sulla stored procedure dell'esempio, in cui sembrava che il piano d'esecuzione fosse lo stesso di una select effettuata con la where precisa o di un dynamic SQL, in effetti si può affermare che, al contrario, il piano peggiora, quindi mi è stato proposto il metodo co Leggi tutto il post...
lunedì, 06 nov 2006 Ore. 09.30
Filtro dinamico senza Dynamic SQL
A volte può capitare di dover scrivere applicazioni che diano all'utente finale la possibilità di eseguire ricerche sempre più approfondite e dettagliate.Molto spesso il cliente ha bisogno di filtrare quasi per intero i dati inseriti in una tabella.Ad esempio, pensando ad una biblioteca, potremmo voler filtrare l'anagrafica dei libri sia per titolo, che per autore, che per categoria, che per tanti altre informazioni disponibili.Sia lato applicazione, sia lato database, risulta scomodo gestire co Leggi tutto il post...
domenica, 05 nov 2006 Ore. 21.28
Funzioni di ranking, esempi di utilizzo
Le funzioni di ranking sono una delle novità di SQL Server 2005 più utili e più potenti.Con esse si possono creare contatori autoincrementanti oppure si possono raggruppare in sottoset di dati resultset più grandi o ancora, creare classifiche basate su raggruppamenti definiti, aumentando così il controllo sui record.Una delle problematiche che ho incontrato ultimamente (in alcuni sviluppi su DataWareHouse) è la presenza di record duplicati su flussi di input di una determinat Leggi tutto il post...
lunedì, 10 lug 2006 Ore. 02.32
[SQL 2005] Come criptare/decriptare dati sensibili
Per criptare i nostri dati possiamo utilizzare chiavi simmetriche (SYMMETRIC KEYS). Una chiave di questo tipo assicura una protezione molto più elevata rispetto a quella fornita dalle funzioni di T-SQL (come EncryptByPassPhrase).Ecco cosa possiamo utilizzare per rendere più sicuri i nostri dati (tramitre l’algoritmo TRIPLE DES):-- Creare una chiave simmetrica-----------------------------------------------------------------------CREATE SYMMETRIC KEY TestKeyWITH ALGORITHM = TRIPLE_DESENCRYPTION BY Leggi tutto il post...
mercoledì, 24 mag 2006 Ore. 10.38
Utile funzione sulle date
Navigando qua e là ho trovato questa funzione (weblogs.sqlteam.com/jeffs) che può essere molto utile per i calcoli sulle date. Molto spesso in fatti dobbiamo ricavarci l’ultimo giorno del mese precedente, l’ultimo giorno del mese e così via..Questa funzione può essere una soluzione:CREATE FUNCTION [dbo].[MDate](@Year int, @Month int, @Day int) RETURNS DATETIMEAS BEGIN /* MDate(Year(@Date),Month(@Date),1) -- the 1st day of th Leggi tutto il post...
mercoledì, 10 mag 2006 Ore. 13.02
|
Statistiche |
- Views Home Page: 601.376
- Views Posts: 1.068.550
- Views Gallerie: 641.208
- n° Posts: 484
- n° Commenti: 273
|
|