Using DBCC MEMORYSTATUS to Monitor SQL Server Memory Usage
Articolo della KB di Microsoft che spiega come usare il comando DBCC MEMORYSTATUS per capire come e dove viene consumata la memoria da parte di SQL Server
Articolo della KB di Microsoft che spiega come usare il comando DBCC MEMORYSTATUS per capire come e dove viene consumata la memoria da parte di SQL Server
L’auditing dei dati rappresenta l’insieme delle attività mirate ad accertare la validità e l’affidabilità di un’informazione.
I meccanismi di auditing vengono utilizzati per tenere traccia di tutti gli eventi che riguardano la sicurezza del sistema database. SQL Server Profiler è un tool che permette di monitorare gli eventi del database engine, si basa sull’impostazione di tracce (o filtri di traccia). Una traccia (o filtro di traccia) è un set di eventi memorizzati di cui occorre creare un profilo.
Recentemente, ho avuto l’occasione di realizzare un’estrazione dati in cui era richiesto di dividere le righe di una colonna di tipo VARCHAR per ottenere due colonne ordinate tra loro, una specie di partizione dinamica ordinata.
Scenario
Disponiamo di un database SQL Server in cui sono presenti le tabelle anagrafiche dbo.Magazzini e dbo.Vani utilizzate rispettivamente per memorizzare l’anagrafica dei magazzini aziendali ed la relativa suddivisione in vani.
Le tabelle dbo.Magazzini e dbo.Vani hanno la seguente struttura:
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.
Il transaction log viene principalmente utilizzato da SQL Server per garantire le proprietà ACID delle transazioni
In funzione del modello recupero del database (in inglese Recovery Model) il transaction log può essere utilizzato anche come strumento di backup in modo da poter ricostruire l’intero database nel caso qualcosa non andasse per il verso giusto.
SIMPLE RECOVERY MODEL
Se il modello di recupero è impostato a Semplice (Simple), il transaction log verrà utilizzato solo per garantire le proprietà ACID citate in precedenza. Ogni volta che una transazione viene confermata od annullata, lo spazio occupato dalla stessa nel transaction log verrà liberato automaticamente e ri-utilizzato.
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:
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
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.

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">.
Come trasferire login da un SQL Server ad un’altro.
Questa KB descrive il procedimento per le versione 7, 2000 e 2005 di SQL Server
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]