SQLServerITA

SQL Server e non solo

  • settembre: 2011
    L M M G V S D
    « Ago   Ott »
     1234
    567891011
    12131415161718
    19202122232425
    2627282930  
  • Blog Stats

    • 17,021 hits
  • Inserisci il tuo indirizzo e-mail per iscriverti a questo blog e ricevere notifiche di nuovi messaggi per e-mail.

    Segui assieme ad altri 6 follower

Archive for settembre 2011

SQL Server 2005/2008: conteggio database [powershell]

Posted by belthazor78 su 29 settembre 2011


Piccolo script che ci permette di fare un conteggio di tutte le nostre istanze e di tutti i nostri db che gestiamo.

Lo script è il seguente:

trap
{
write-error $(“DLL In Errore: ” + $_.Exception.GetType().FullName);
write-error $(“Messaggio: ” + $_.Exception.Message);
write-error $(“ID Errore: ” + $_.Exception.Number);
exit
}
#Pulizia Output
cls
#per conteggio database
[int]$TotSQLDB = 0
#per conteggio istanze
[int]$TotSQLIst = 0
#loop su tutte le istanze
ForEach ($instance in Get-Content “c:\ElencoIstanze.txt”)

{
#Stringa di connessione
$connectionString = “Server=$instance;Database=master;Trusted_Connection=True;”
$SqlConn = New-Object -Typename System.Data.SqlClient.SqlConnection
$SqlConn.ConnectionString = $connectionString
#Si apre la connessione
$SqlConn.open();
#Comando SQL da eseguire
$cmd = “SELECT COUNT(*) AS cnt FROM sys.databases WITH(NOLOCK) where database_id > 4”;
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $cmd, $SqlConn
#Esecuzione query
$result = $SqlCmd.ExecuteReader()
$result.Read() > $null
#Risultato della query
$dbCount = $result[0]
#Chiusura connessione
$SqlConn.close()
Write-Host ‘========’ $instance ‘=======’
Write-Host ‘Database totali’ $dbCount
$TotSQLDB = $TotSQLDB + $dbCount
$TotSQLIst = $TotSQLIst + 1
}
Write-Host ”
Write-Host ‘ISTANZE SQL TOTALI:’ $TotSQLIst
Write-Host ‘DATABASE TOTALI:’ $TotSQLDB

#Ripuliamo tutto
[GC]::Collect()

L’output prodotto sarà simile a questo:

Per ogni istanza SQL trovata nel file ci sarà un report su quanti DB sono presenti in quella istanza; alla fine delle script verrà, inoltre, riportato un riassunto di tutte le istanze e relativi db 😀

Alcune cose da notare sullo script:

  1. Non tiene in considerazione i DB di sistema (where database_id > 4)
  2. Lo script per prendere le istanze su cui controllare il numero dei db usa il file c:\ElencoIstanze.txt…o create questo file o ne create un altro a vostro piacimento ricordandovi di cambiare anche il percorso al nuovo file nello script.
  3. Lo script, nella query da eseguire, aggiunge l’hint WITH(NOLOCK) per evitare di “bloccare” inutilmente le tabelle di sistema.
  4. Viene usato alla fine dello script il comando [GC]::Collect() per ripulire la cache del programma

Posted in Uncategorized | Leave a Comment »

SQL Server: Data Space Analyzer

Posted by belthazor78 su 26 settembre 2011


Ottimo e free tool che ho trovato che vi potrà essere utile se gestite una istanza SQL Server.

Il programma, Altantis Data Space Analyzer, ci aiuta a capire quanto è grande un database e in particolare chi occupa maggior spazio nel database con suddivisione di tabelle e indici. Vediamo come funziona in dettaglio.

Il programma potete scaricarlo a questo indirizzo http://www.atlantis-interactive.co.uk/products/dataspaceanalyser/default.aspx

Una volta installato e avviato ci si presenta questa maschera a video:

La prima cosa da fare è quella di connettersi ad database; è sufficiente selezionare dal Menù File–>Connect to Server/Database

Comparirà una maschera del tutto simile alla seguente dove bisogna inserire alcuni parametri come l’indirizzo dell’istanza SQL Server e il database su cui effettuare l’analisi dello spazio occupato.

Una volta cliccato sul pulsante OK della figura precedente, ci compare a video la maschera di cui sotto con un bel grafico dello spazio occupato in base ai file group trovati.

Per ottenere un dettaglio a livello di tabelle del database è sufficiente fare doppo click sul grafico per ottenere quello presentato di seguito e che risulta molto più dettagliato con vari informazioni utili suddivise per le tabelle: spazio totale allocato, spazio occpato, spazio degli indici ed altro.

E’ possibile cambiare anche tipologia di grafico ottenendone una un pò più pratico:

Si può scendere ancora più in dettaglio semplicemente cliccando su una delle barre di sui sopra (che corrispondono ad una sigola tabella); si otterrà un grafico come quello seguente e che mostrerà il dettaglio della singola tabella:

Possiamo anche decidere di selezionare altre tipologie di grafici rispetto a quello iniziale:

E come ultima nota positiva c’è la possibilità di esportare i risultati sia in un comodo file CSV oppure una semplice immagine che racchiuderà il solo grafico.

Posted in SQL+Server | Contrassegnato da tag: , , | Leave a Comment »

SQL Server 2005/2008: informazioni job [tsql]

Posted by belthazor78 su 23 settembre 2011


Un piccolissimo script per avere alcune informazioni sui job presenti in una istanza di SQL Server 2005 o superiori.

Lo script elencherà, oltre al nome del job, anche chi è l’owner, la data di creazione e modifica, la descrizione e anche l’ID del job; questo ultimo elemento, l’ID del Job, può tornare utile quando, usando l’activity monitor, avremo listati i job in esecuzione: il listato ci presenterà l’ID del job e non il nome.

Lo script è il seguente:

SELECT
s.name as [Nome Job],
l.name as [User Owner],
s.description as [Descrizione Job],
s.date_created as [Data Creazione],
s.date_modified as [Data Ultima Modifica],
s.job_id [Job ID]
FROM  msdb.dbo.sysjobs s
LEFT join master.sys.syslogins l ON s.owner_sid = l.sid

Molto semplice e dovrebbe avere un risultato del genere:

Posted in SQL+Server, SQL+Server+2005, SQL+Server+2008, SQL+Server+2008+R2, SQL+Server+Denali | Contrassegnato da tag: , | Leave a Comment »

Windows 8: come installare il setup su chiavetta?

Posted by belthazor78 su 23 settembre 2011


Molto semplice e in effetti questo sarà un post lampo :D

C’è un vecchio tool “Windows 7 USB/DVD Download Tool” scaricabile a questo indirizzo http://www.microsoftstore.com/store/msstore/html/pbPage.Help_Win7_usbdvd_dwnTool che serviva per “copiare” i file di installazione di Windows 7 su una chiavetta USB che diventava anche bootable: questo si traduceva nella possibilità di avviare il setup di Windows 7 direttamente da USB risparmiando in tempo e velocità (rispetto a DVD).

Bene carissimi tamtammers la buona notizia è che questo tool funziona tranquillamente anche con la ISO di Windows 8 (ho provato al 32bit ma anche le altre dovrebbero andare bene). La procedura è la stessa che avete fatto per Windows 7: selezionate la ISO, la chiavetta USB e il tool farà il suo ottimo lavoro ^_^

E via verso Windows 8!

Posted in Windows+8 | Contrassegnato da tag: , , | Leave a Comment »

Windows 7 e Windows 8 in dual boot

Posted by belthazor78 su 21 settembre 2011


Bhè il blog parlerà anche di altri argomenti oltre a SQL Server 😀

E come non poter iniziare un post diverso da SQL se non con il nuovo Windows 8? Una delle maggiori domande e curiosità è quella di sapere se è possibile o meno installare un Windows 8 su un computer dove è già installato Windows 7. Ebbene la risposta è sì e la procedura, come vedrete, risulta molto semplice (ovviamente serve un pochino di dimestichezza con i vari comandi).

Quello che però vi consiglio da subito è quello di effettuare un backup completo del proprio caro Windows 7 in caso di problemi (anche perchè non mi prendo responsabilità se dovesse succedere qualche cosa al vostro amato computer 🙂 ); la procedura che vi andrò a mostrare e che è anche riportata in vari siti, andrà a modificare il bootloader del vostro computer, modifica resa necessaria da Windows 8 che ha uno nuovo.

Vediamo come fare in semplici passaggi e spero senza danni 😉

Fate, come dicevo, un intero backup del vostro sistema e salvatelo su un supporto esterno rispetto al computer su cui installerete Windows 8.

Successivamente procuratevi una ISO di Windows 8 e installatela su una chiavetta USB tramite il tool “Windows 7 USB/DVD Download Tool” scaricabile al link http://www.microsoftstore.com/store/msstore/html/pbPage.Help_Win7_usbdvd_dwnTool

A questo punto bisognerà creare una risorsa VHD su cui poi installeremo il nostro sistema operativo. I passi da CMD eseguito in modalità di amministratore sono molto semplici:

1. CREATE VDISK FILE=”D:\winotto.vhd” MAXIMUM=40000 (questo passo richiederà molti minuti che si baseranno sulla dimensione scelta)
2. SELECT VDISK FILE=”D:\winotto.vhd”
3. ATTACH VDISK
4. CREATE PARTITION PRIMARY
5. ASSIGN LETTER=M
6. FORMAT QUICK LABEL=WinOtto
7. Exit Diskpart

Appena digitate il comando al punto numero 5 vi verrà chiesto, tramite un pop-up a video, se vorrete formattare tale disco…dite Cancel e proseguite con i comandi da dos che è più sicuro.

Bene a questo punto collegate la chiavetta USB e riavviate il pc avendo cura di cliccare sul tasto F12 al riavvio per selezionare come boot la chiavetta USB.

Inizierà l’installazione di Windows 8 come da manuale; dovete fare molta attenzione e arrivare fino alla schermata dove vi verrà richiesto di scegliere il disco su cui iniziare l’installazione di Windows 8. Ecco non proseguite ma selezionate da tastiera il comando SHIFT+F10 per avviare una maschera di Prompt dei comandi.

Dovrete digitare i seguenti comandi:

1. Select vdisk file = D:\winotto.vhd –> attenzione perché potrebbe avere un’altra lettera rispetto a quella che si aveva in Windows
2. Attach vdisk

A questo punto chiudere la finestra del DOS ed effettuare un refresh sulla videata della lista dei dischi e magicamente dovrebbe comparire il nostro nuovo disco. Notate bene che l’installazione, una volta selezionato il disco nuovo, ci dirà che non si potrà proseguire nell’installazione (il punto esclamativo che compare in basso alla schermata)…nulla di preoccupante perchè il tasto Next è attivo e se cliccate su di esso partirà l’installazione di Windows 8 senza alcun problema.

Da ora in poi il vostro bootloader sarà diverso e avrà queste “sembianze”:

Alè Windows 7 e 8 installati sullo stesso PC. Non penso sia possibile ripristinare il vecchio bootloader (ma non sarà necessario perchè funzionerà tutto alla grande) però ancora non ho trovato notize a riguardo.

Maggiori info:

http://blogs.sysadmin.it/redrain/archive/2011/09/15/windows-8-boot-da-vhd.aspx

http://blog.concurrency.com/infrastructure/dual-boot-windows-8-from-vhd-using-windows-setup/

Posted in Uncategorized | Contrassegnato da tag: , , | 1 Comment »

SQL Server: query lente per AdventureWorks

Posted by belthazor78 su 20 settembre 2011


Ogni tanto servono anche delle query lente per poter effettuare dei test o per fare degli esempi. Ne ho cercate, quindi, alcune in rete ed ecco quello che ho trovato:

SELECT * FROM Sales.SalesOrderDetail s
INNER JOIN Production.Product p ON s.ProductID = p.ProductID

Tempo: [QUALCHE SECONDO]

SELECT * FROM Production.WorkOrder s
INNER JOIN Production.WorkOrderRouting p ON s.WorkOrderID = p.WorkOrderID

Tempo: [QUALCHE SECONDO]

SELECT * FROM Production.TransactionHistory th
INNER JOIN Production.TransactionHistoryArchive tha ON th.Quantity = tha.Quantity

Tempo: [ANCHE ORE]

SELECT * FROM Production.WorkOrder s
FULL JOIN Production.WorkOrderRouting p ON s.WorkOrderID = p.WorkOrderID
FULL JOIN Production.Product T ON S.ProductID = t.ProductID

Tempo: [QUALCHE SECONDO]

Possono tornare utili :D ma dovete avere il database di esempio AdventureWorks installato.

Posted in SQL+Server | Leave a Comment »

SQL Server 2008: ciclo aggiornamento statistiche [tsql]

Posted by belthazor78 su 18 settembre 2011


Piccolo script per creare altri script di aggiornamento statistiche su tutti i database di una istanza SQL. Per ora è uno script che di fatto non eseguirà alcuno script ma vi creerà gli script che poi potrete lanciare a mano. Utile  per capire se ci sono database che richiedono più tempo oppure per “splittare” l’operazione.

L’aggiornamento delle statistiche con sp_updatestats aggiorna solo le statistiche che ne hanno realmente bisogno e con un 20% di campione (non è come fare un aggiornamento FULLSCAN).

Ecco lo script:

DECLARE @SQL VARCHAR(1000)
DECLARE @DB sysname
DECLARE DBCYCLE CURSOR FAST_FORWARD FOR
SELECT [name]
FROM master..sysdatabases
WHERE [name] NOT IN (‘model’, ‘tempdb’)
ORDER BY [name]
OPEN DBCYCLE
FETCH NEXT FROM DBCYCLE INTO @DB
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SQL = ‘PRINT ”Starting Upgrade Statistics on [‘+ @DB +’] at: ” + convert(char(20), getdate()) ‘
+ CHAR(13) + ‘USE [‘ + @DB +’]’ + CHAR(13) + ‘EXEC sp_updatestats’ + CHAR(13) +
‘PRINT ”Upgrade Statistics Finished on [‘+ @DB +’] at: ” + convert(char(20), getdate()) ‘ + CHAR(13)
PRINT @SQL
FETCH NEXT FROM DBCYCLE INTO @DB
END
CLOSE DBCYCLE
DEALLOCATE DBCYCLE

Anche in veste grafica:

Ed ecco l’esecuzione degli script generati in precedenza:

Molto comodo :D anche per farvi vedere come fare un ciclo su tutti i db ed eseguire un comando in particolare anzichè usare il comando Sp_MSForEachDB che è ottima come funzione ma che in realtà non è ancora documentata. Lo script è stato testato con SQL Server 2008 R2.

Posted in SQL+Server+2008, SQL+Server+2008+R2 | Contrassegnato da tag: , , , | 1 Comment »

SQL Server Denali: deprecated and discontinued features…e il 64bit

Posted by belthazor78 su 16 settembre 2011


Ecco due link da conservare: uno riguarda le funzioni “deprecate”  (http://msdn.microsoft.com/en-us/library/ms143729(v=SQL.110).aspx) in SQL Server Denali (le funzioni, cioè, che non verranno utilizzate più dopo la versione Denali) e le funzioni “discontinued” (http://msdn.microsoft.com/en-us/library/ms144262(v=SQL.110).aspx)  (cioè quelle che non possono essere più utilizzate già da SQL Server Denali)

Tra queste ultime “funzionalità” che non sono più supportate ce ne una che deve essere presa in considerazione molto di più delle altre. Posso immaginare che il discorso seguente è del tutto normale per il resto del pianeta, ma chi, come me, si ritrova ancora alle porte del 2011 a gestire sistemi a 32 bit è importante.

Dalla versione Denali di SQL Server, infatti, si legge che:

No support for over 4 GB of physical memory in 32 bit OS. No Address Windowing Extensions (AWE) support.

E viene aggiunto che:

Need to use 64-bit OS to support over 4 GB of physical memory.

Praticamente chi ha più di 4GB e fino ad ora ha utilizzato un sistema a 32BIT dovrà sbrigarsi a migrare il sistema operativo a 64BIT perchè Denali più di 4GB non vede e non supporta. Mi pareva anche logico visto che l’ultima versione di Windows Server 2008 R2 è SOLO a 64BIT.

Microsoft ha fatto capire l’evoluzione…ora bisogna vedere se alcuni clienti lo capiscono (anzichè avere 64 GBdi RAM su un sistema a 32BIT)

Posted in SQL+Server+Denali | Contrassegnato da tag: , | Leave a Comment »

SQL Server 2008: Reporting e IIS 7

Posted by belthazor78 su 16 settembre 2011


Un collega era stupito perchè sotto IIS non si trovava più le cartelline relative a Reporting Services 2008; eppure il sito di Reporting funzionava correttamente e i report venivano generati senza alcun problema.

Magia? No… :D la risposta è molto semplice: dalla versione 2008 di SQL Server il Reporting Services di SQL Server non necessita più di IIS, anzi può anche non essere installato.

Un pò come, se ricordo bene, con le applicazioni web di Visual Studio 2008 che non richiedevano più IIS installato ma sfruttavano un sito o indirizzo virtuale.

Stessa cosa per Reporting Services che usa un suo “particolare” sito. Il tutto è anche spiegato qui http://blogs.msdn.com/b/bwelcker/archive/2007/12/04/everybody-why-leave-iis.aspx

Ecco alcuni screenshot (c’è Denali ma è la stessa cosa da SQL Server 2008).

ISS funzionante e senza directory con il Reporting in funzione:

Ecco IIS fermato con il Reporting ancora in esecuzione senza problemi:

Posted in SQL+Server+2008, SQL+Server+Denali | Contrassegnato da tag: , | Leave a Comment »

SQL Server Denali: SSMS e il default backup path

Posted by belthazor78 su 13 settembre 2011


Una piccola e comoda novità introdotta con il nuovo SSMS di Denali è la possibilità di settare il percorso di default per i backup dei database senza passare per i Facets.

Andando sulle proprietà dell’istanza, infatti, compare una nuova riga Backup nel Database Default Locations:

Una piccola ma credo comoda novità.

Posted in SQL+Server+Denali | Leave a Comment »