SQL Server ed ALM su database


Il blog di Alessandro Alpi
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
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...
Categoria: Transact-SQL
mercoledì, 10 mag 2006 Ore. 13.02
Statistiche
  • Views Home Page: 586.041
  • Views Posts: 1.043.162
  • Views Gallerie: 610.306
  • n° Posts: 484
  • n° Commenti: 273



















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003