giovedì 31 luglio 2008

Troncare il file di log di un database Microsoft SQL

Con SQL 2000 sono sempre incappato nel problema dell'incremento automatico delle dimensioni del file di log del database, infatti per impostazione predefinita il file LDF cresce continuamente di dimensioni, fino a raggiungere le dimensioni massime impostate nel database, o peggio, fino a terminare lo spazio su disco.

Questa situazione si crea semplicemente perchè il file LDF tiene traccia di tutte le transazioni effettuate, anche se correttamente committate.

Per risolvere questo problema è sufficiente lanciare il comando:

DBCC BACKUP LOG [database name] WITH TRUNCATE_ONLY

semplice, immediato e soprattutto, risolutivo.

via: merlinox.tumblr.com

giovedì 17 luglio 2008

Riavvio rapido dei servizi

Sviluppando applicazioni che svolgono attività batch in ambiente microsoft, ci si trova immancabilmente a lavorare con i servizi di windows.

Con questo tipo di programmi il modo di lavorare cambia leggermente, e così non potendo più avviare le applicazioni con l'ambiente di sviluppo, ci si scontra spesso e volentieri con la scomoda interfaccia di gestione dei servizi.

Beh, così scomoda alla fine non è, ma lavorando e debuggando queste applicazioni ci si trova a fermarle e avviarle centinaia di volte al giorno.

Per poter quindi fermare e avviare i servizi con un solo click, si può tranquillamente creare un file .bat con queste 3 righe di codice:

net STOP "service name"
pause
net START "service name"


Il pause tra i due comandi è fondamentale, infatti operativamente si lancerà questo comando, appena il servizio è stoppato sarà possibile compilare l'eseguibile e, a compilazione completata con un solo invio nella schermata DOS aperta, sarà possibile riavviare il servizio.

Comodo, pratico e rapido...

martedì 15 luglio 2008

SandBoxie, un ambiente protetto per eseguire software

Qualche tempo fa, scaricando un software dalla rete mentre avevo l'antivirus poco aggiornato ho infettato il mio pc con un poco gradevole troian.Da allora, oltre a risolvere il problema dell antivirus, ho cominciato ad eseguire i file sospetti in un ambiente protetto. Tengo sempre a portata di mouse una macchina virtuale da avviare all'occorrenza e, una volta testato e controllato il software lo utilizzo sulla macchina reale.
Da pochi giorni ho scoperto una soluzione molto più pratica.

Il software sandboxie infatti si occupa di eseguire un particolare software da voi scelto, in una "scatola chiusa" non consentendo al processo eseguito di accedere direttamente alla scrittura del disco.
Immagine http://www.sandboxie.com/

Molto più pratico di una lenta macchina virtuale, e tutto sommato efficace.

giovedì 10 luglio 2008

Il mio PC ha un buco nero!!!!

Ho guardato il mio PC e ho trovato i seguenti componenti...

- Sfoglia tutta la rete
- Risorse di rete bluetooth
- Ricerca nuovo hardware
- Svuota cestino
- Cancella i Temporary internet files...
...

cos'hanno in comune queste cose?
Beh... non importa quanto il vostro pc sia potente, quanti processori sono disponibili o quanta ram è installata, utilizzare questi componenti renderà il PC inutilizzabile per un breve periodo, spesso arbitrario...

Insomma... sono accessi ad un un buco nero per le prestazioni...

venerdì 15 febbraio 2008

Emettere un alert a seguito di un postback

Programmando applicazioni web ci si trova spesso nella condizione di voler comunicare qualcosa all'utilizzatore in maniera evidente, attirando l'attenzione su una condizione particolare, o su un errore.

In windows form utilizzeremmo il classico messagebox, comodo, pieno di opzioni e molto pratico.

Nelle pagine ASP.NET invece dobbiamo emettere il codice javascript per far visualizzare un alert js contenente il messaggio del caso.

Ho scritto quindi una comodissima funzione nelle pagine web che assomiglia molto alla seguente:

public void MessageBoxScriptInject(string messageToShow)
{
// lo rendo comatibile con javascript...
string messageTranslated =
messageToShow.Replace("'", "\\'");
messareTranslated =
messareTranslated.Replace("\n", " ");
messareTranslated =
messareTranslated.Replace("\r", " ");

// creo il javascript
System.Text.StringBuilder js =
new System.Text.StringBuilder();
js.AppendLine("
window.alert('" +
messareTranslated + "');");

// inietto il codice nella pagina (sintassi .NET 2.0)
this.ClientScript.RegisterStartupScript(
typeof(string),
Guid.NewGuid().ToString(),
js.ToString(),
true);
}

venerdì 8 febbraio 2008

Reindicizzare un intero database su SQL server

Chi lavora su applicazioni che lavorano su database SQL Server di dimensioni considerevoli individua abbastanza presto che uno dei fattori critici dell'applicazione è il tempo "speso" ad accedere al database e che il tempo di risposta delle singole query può cambiare in maniera sostanziale se gli indici vengono creati accuratamente.

Dopo la creazione del DB e degli indici, questi tendono a deteriorarsi con il tempo, perdendo prestazioni durante l'accesso.

Un modo pratico per ripristinare le prestazioni degli indici è lanciare su ogni database, magari schedulandolo come attività notturna, uno script simile a questo:


use Database;
GO
exec sp_msforeachtable 'dbcc dbreindex ("?") with no_infomsgs';
GO