Script

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 .

Calcolo della cifra di controllo di un codice EAN/UCC

Sergio Govoni

Lo standard di codifica EAN/UCC richiede che ogni codice generato termini con una cifra compresa tra zero e nove chiamata cifra di controllo (check digit).

La seguente Scalar-valued Function UDF_GetCheckDigitUCCEAN() implementa l’algoritmo di calcolo della cifra di controllo e può essere utilizzata per i seguenti tipi:

  • EAN/UCC-8
  • EAN/UCC-12
  • EAN/UCC-13
  • EAN/UCC-14
  • SSCC (EAN/UCC-128) 

-- Drop Scalar-valued Function DBO.UDF_GetCheckDigitUCCEAN
IF OBJECT_ID(‘UDF_GetCheckDigitUCCEAN’, ‘FN’) IS NOT NULL
  DROP FUNCTION DBO.UDF_GetCheckDigitUCCEAN
GO

Che dimensioni hanno i file di log dei miei DB ?

Davide Mauri

Questo  piccolo script (per Sql2005) riporta, per ciascun database, le dimensione dei dati, del file di log, la percentuale di utilizzo del log ed il modello di recovery attivo.

select
  rtrim (pc1.instance_name) as database_name,
  pc3.cntr_value/1024.0 as database_size_mb,
  pc1.cntr_value/1024.0 as log_size_mb,
  cast (pc2.cntr_value*100.0/pc1.cntr_value as dec (5,2)) as log_space_used_perc,
  db.recovery_model_desc
from
  sys.databases as db
inner join
  sys.dm_os_performance_counters as pc1 on pc1.instance_name = db.name
inner join
  sys.dm_os_performance_counters as pc2 on pc1.instance_name = pc2.instance_name
inner join
  sys.dm_os_performance_counters as pc3 on pc1.instance_name = pc3.instance_name
where
  pc1.counter_name = ‘Log file(s) Size (KB)’
and
  pc2.counter_name = ‘Log file(s) Used Size (KB)’
and
  pc3.counter_name = ‘Data File(s) Size (KB)’
and
  pc1.cntr_value > 0
order by
  pc1.instance_name

Script per l'analisi della dimensione della Buffer Cache

Davide Mauri

Questo script permette di vedere quanta memoria è occupata dai vari oggetti di SQL Server:

select
    [name],
    used_memory_mb = sum(single_pages_kb + multi_pages_kb)/1024.0
from
    sys.dm_os_memory_clerks
group by
    [name]
order by
    2 desc

La memoria occupata dai piani di esecuzione per query ad-hoc è rappresentata dalla riga “SQL Plans”, mentre quella utilizzata per Stored Procedure e Trigger è indentificata dalla riga “Object Plans”

Ricostruire la sequenza di ripristino

Davide Mauri

Nella definizione di una strategia di disaster recovery uno dei principali fattori da tenere in considerazione è avere ben chiare le modalità di ripristino dei dati ed avere coscienza non solo della corretta sequenza di ripristino ma anche dei tempi attesi è un aspetto di primaria importanza. Il più delle volte si perde del tempo prezioso nel ricercare, all’interno di un device di backup, la posizione dei vari backup completi, differenziali e del t-log al fine di ricostruire la corretta sequenza di ripristino. Personalmente mi sono costruito uno script che potete trovare qui: