Pagine

Visualizzazione post con etichetta Sql Server 2008 R2. Mostra tutti i post
Visualizzazione post con etichetta Sql Server 2008 R2. Mostra tutti i post

martedì 8 ottobre 2013

Spostare una tabella da un FileGroup ad un altro

Mai avuto la necessità di spostare una tabella da un filegroup ad un altro ?
Mi è giusto capitato pochi giorni fa e

sabato 28 settembre 2013

Backup/Restore come Initial Snapshot di una replica transazionale

In certi scenari di replica, dove il DB da pubblicare è di grosse dimensioni, potrebbe essere conveniente configurare la/le sottoscrizioni partendo da un Backup\Restore anziché da un Initial Snapshot come prevede la procedure standard.
La creazione dell'Initial Snapshot potrebbe essere molto lunga e consumare molte risorse che in questo modo risparmiamo.

domenica 22 settembre 2013

T-SQL e caricamento dati differenziale..... E le performance ?

Immaginiamo questo scenario :
DBTarget è un DB OLAP che contiene una tabella TargetTable ed è utilizzato per effettuare Business Intelligence
DBSource è il DB OLTP che contiene una tabella SourceTable ed è utilizzato dai programmi aziendali di gestione.
Abbiamo la necessità di allineare il contenuto di TargetTable con quello di SourceTable utilizzando T-SQL.

giovedì 21 marzo 2013

SQL Server Express Edition : Schedulare jobs

Ok, SQL Server Express non ha il SQL Server Agent, ma questo non è una buona scusa per non implementare backup e attività di manutenzione regolari dei Database.

mercoledì 6 marzo 2013

SQL Server 2012 : Datapage Repair

A causa di errori del disco, del controller, sbalzi di tensione o altri casi particolari i dati contenuti nei DB potrebbero danneggiarsi e diventare inutilizzabili. Il problema è che potremmo non accorgerci del danno fino a che quei dati precisi non ci servono.
Cosa dobbiamo fare in questo malaugurato caso ?

venerdì 26 ottobre 2012

Begin Try, Transazioni, Xact_Abort e Uncommittable transaction

Il costrutto BEGIN TRY, introdotto sin dal'edizione sql 2005, implementa una gestione degli errori simile a quella di altri linguaggi (C#, C++...).
Tenta di eseguire gli statement contenuti nel blocco try, in caso d’errore esegue gli statement del blocco catch.
E' estremamente utile ma presenta alcune restrizioni di cui è bene tenere conto.

mercoledì 8 agosto 2012

Tabelle partizionate, indici, ricerche e manutenzione...

Gli indici partizionati/allineati sono estremamente utili quando dobbiamo fare ricerche nei dati di tabelle partizionate ma potrebbero essere un collo di bottiglia per le performance quando non sono creati correttamente. Qui un breve post sulla struttura degli indici in tabelle partizionate.

martedì 7 agosto 2012

Tabelle Partizionate e struttura degli indici

Tempo fa avevo parlato della modalità di creazione di tabelle partizionate, ora vediamo come sono composti gli indici creati su questa tipologia di tabelle.

domenica 1 luglio 2012

Trovare l'isolation level delle transazioni attive e altro....

Mai capitato di dover capire lo stato di una transazione, il suo isolation level e chi l'ha lanciata ? SQL mette a disposizione tantissime Dynamic Management Views and Functions che ci aiutano a capire cosa sta facendo l'engine.

lunedì 12 marzo 2012

Come Transaction Log Growth e Virtual Logs impattano sulle Performance ?

Il Transaction Log è un file che molto spesso, quando si pensa alle performance, viene messo nel dimenticatoio.
Se riuscissimo a "gestire" il T-Log in modo ottimale, ed è possibile, potremmo migliorare senza alcuno sforzo le performance del nostro DB.

domenica 4 marzo 2012

Auto Create Statistics e Auto Update Statistics

Quando SQL Server crea e aggiorna le statistiche ?
Se abbiamo abilitato le opzioni Auto Create Statistics e Auto Update statistics SQL server crea questi oggetti automaticamente e li mantiene aggiornati automaticamente quando necessario.

mercoledì 22 febbraio 2012

Delete, truncate e data pages

Delete o truncate ?
Quando abbiamo la necessità di rimuovere il contenuto della nostra tabella quale istruzione è più indicata ?
Ovviamente se abbiamo la necessità di rimuovere solo un insieme ristretto di righe è d'obbligo usare l'istruzione Delete,
mentre se è l'intero set di righe che vogliamo eliminare allora la truncate potrebbe fare al caso nostro....
Ma se elimino l'intero set di righe vengono eliminate anche le pagine che le contengono ?

Data Type e performance

La scelta del tipo di dato per le colonne delle tabelle nei database è fondamentale per avere delle performance sempre all'altezza delle aspettative degli utenti.
Sottovalutare questo aspetto potrebbe avere conseguenze nefaste per le nostre applicazioni che reperiscono i dati grazie a SQL server.
Ogni tipo di dato, sia a lunghezza fissa che a lunghezza variabile, ha una propria allocazione in termini di byte scritti sul disco.
Le righe contenute nelle nostre tabelle vengono archiviate in strutture di 8K chiamate data page ed ogni riga ( salvo casi particolari ) dovrà essere contenuta interamente in una singola data page.
La quantità di righe che riusciamo a contenere in una singola data page determina il numero di data page che costituiranno la nostra tabella.
All'aumentare delle data page aumenteranno le operazioni di I/O per evadere le nostre richieste e di conseguenza potrebbero calare drasticamente le performance....

lunedì 20 febbraio 2012

Pivoting Dinamico

Immaginate d'avere una tabella e di volerne effettuare il pivot.
L'istruzione Pivot richiede esplicitamente quali valori debbano essere trasformati in colonne, per esempio :

Select * from MyTable
Pivot(Aggregate_fn(Fields0) for Fields1 in (Values List)) Pvt

Immaginate di non conoscere a priori quali valori debbano essere orizzontalizzati con la pivot perchè il contenuto della tabella è
estremamente variabile. Come fare ?

domenica 19 febbraio 2012

Ricerca in Campi XML

Immaginate un magazzino di spedizionieri che necessita di una descrizione dettagliata di ogni prodotto conservato al suo interno.
Nei suoi scaffali si protrebbero trovare prodotti come Sci, Televisioni, Automobili, Pc etc.... Come fare allora per gestire anche nel DB
dei dati così differenti tra loro per struttura ?

giovedì 15 settembre 2011

Creare tabelle partizionate

Il partizionamento delle tabelle consente di distribuirne il contenuto su più file, riducendo l'impatto delle operazioni Insert, Update, delete e Select sul sistema dischi, grosso collo di bottiglia per le performance di un database.