T-Sql

Deframmentazione indici

Sergio Govoni

Abbiamo trattato il problema della frammentazione degli indici nei post Index Fragmentation e Index Fragmentation (Parte 2) definendo la stored procedure USP_ExecReorgRebuildIndex() in grado di eseguire la deframmentazione degli indici con avg_fragmentation_in_percent maggiore del 10% in un database SQL Server 2005.

La DMV sys.dm_db_index_physical_stats non è presente nella versione 2000 di SQL Server (di cui esistono numerose installazioni attive in produzione) da qui la non compatibilità della stored procedure USP_ExecReorgRebuildIndex() su SQL Server 2000.

Gestire date ed orari con SQL Server con SQL Server 2000 e 2005

Davide Mauri

Utilizzo corretto del tipo di dato datetime o smalldatetime

Uno dei problemi che più affligge chi si avvicina a SQL Server è l’utilizzo delle date.

Il campo datetime di SQL (oppure il più piccolo smalldatetime) sembra che a volte si comporti in modo misterioso e non sempre sembra essere chiaro come interpreta i valori che gli immettiamo: il formato è giorno-mese-anno, oppure mese-giorno-anno, oppure altro ancora?

Per evitare qualsiasi problema di questo tipo è sufficiente inserire e pensare alle date utilizzando il formato ISO annomesegiorno, senza separatori. Oggi, quindi, si scriverebbe come:

An Introduction to New T-SQL Programmability Features in SQL Server 2008

Davide Mauri

Un bellissimo whitepaper di Itzik Ben-Gan sulle nuove feature legate a T-SQL di SQL Server 2008

http://msdn.microsoft.com/en-gb/library/cc721270(SQL.100).aspx

Questo l’indice dei contenuti:

  • Transact-SQL Delighters.
  • Declare and Initialize Variables
  • Compound Assignment Operators
  • Table Value Constructor Support through the VALUES Clause.
  • Enhanced CONVERT Function.
  • Date and Time Data Types.
  • New Data Types
  • New and Enhanced Functions
  • Large UDTs.
  • HIERARCHYID Data Type.
  • Indexing Strategies
  • Inserting New Nodes
  • Querying the Hierarchy.
  • Other Supported Methods
  • Table Types and Table-Valued Parameters.
  • Table Types
  • Table-Valued Parameters
  • MERGE Statement
  • Grouping Sets.
  • GROUPING SETS, CUBE, and ROLLUP Subclauses
  • Grouping Sets Algebra.
  • GROUPING_ID Function.
  • DDL Trigger Enhancements.
  • Sparse Columns.
  • Filtered Indexes and Statistics.
  • SQL/CLR Enhancements.
  • Enhancements to User-Defined Aggregates
  • Enhancements to Table-Valued Functions
  • Object Dependencies.
  • Change Data Capture.
  • Collation Alignment with Windows

PIVOT dinamico in SQL Server 2005

Davide Mauri

La funzione PIVOT di SQL Server 2005 non permette di utilizzare una variabile per la definizione delle colonne da creare come risultato dell’operazione di pivoting.

E’ possibile superare questo limite utilizzando del codice SQL dinamico, creando al volo la query da eseguire ed mandandola in esecuzione con il comando sp_executesql.

use tempdb
go

set nocount on
go

/*

 Setup scenario di esempio

*/

if (object_id(‘dbo.tabColonne’) is not null) drop table dbo.[tabColonne];
if (object_id(‘dbo.tab1’) is not null) drop table dbo.[tab1];
go

Importazione dati da file XML a tabella SQL Server

Sergio Govoni

La stored procedure USP_IMPORT_XML_INTO_SQL() definita di seguito permette l’importazione di dati da file XML a tabella SQL Server.

La sorgente dati è rappresentata da un file XML strutturato come il file di esempio TestTab.xml illustrato in figura 1.

TestTab.xml

Figura 1

La destinazione su cui importare i dati è rappresentata da una tabella SQL Server il cui nome deve essere specificato nel file XML dal tag DATA IDENTIFIER. Nell’esempio, la tabella di destinazione è TESTTAB .