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 <DATA IDENTIFIER="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

-- Create Scalar-valued Function dbo.UDF_GetCheckDigitUCCEAN
CREATE FUNCTION dbo.UDF_GetCheckDigitUCCEAN
(@Codice AS VARCHAR(18))
RETURNS SMALLINT
AS BEGIN
  /*
    Algoritmo per il calcolo della cifra di controllo:

Esportazione del result-set di una query su foglio MS Excel

Sergio Govoni

La stored procedure CS_SP_DMOExportToExcel rappresenta un esempio di utilizzo degli oggetti SQLDMO.SQLServer per esportare il risultato di una query su foglio Excel specificando il worksheet su cui trasferire i dati. Il worksheet specificato dal parametro @WorksheetIndex verrà “pulito” e ri-assegnato con i dati della query. Il file XLS esistente non verrà sovrascritto.

/* Stored Procedure CS_SP_DMOExportToExcel per esportazione dati su Excel */

IF (OBJECT_ID(‘CS_SP_DMOExportToExcel’, ‘P’) IS NOT NULL)

 DROP PROCEDURE DBO.[CS_SP_DMOExportToExcel]

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”