AVG

Tra gli antivirus free ho sempre ritenuto AVG un valido prodotto, almeno per un utilizzo domestico. Peccato che, proprio in queste ore, stia mietendo molte vittime fra i propri utilizzatori. Il messaggio che compare al boot di Windows XP, mostrando la schermata blu, è il seguente

STOP: c0000135 {Impossibile individuare un componente}
Impossibile avviare l'applicazione specificata. Winsrv non è stato trovato 

Il problema deriva dall'aggiornamento del file di definizione dell'antivirus rilasciato ieri che rileva dei falsi positivi nei file User32.dll e WINSRV.dll che, venendo posti in quarantena (o eliminati a seconda delle impostazioni), impediscono un corretto riavvio del sistema al successivo boot.

Sul sito del produttore, nella home page, si fa stato del problema e si invita l'utente a non riavviare il pc ma di procedere ad un nuovo aggiornamento. Si, ma... come posso sapere di un problema se questo problema ancora non l'ho riscontrato...? Inoltre la procedura descritta in quel link, ovvero di rimettere al loro posto i files utilizzando la console di ripristino, non ha funzionato nel mio caso e sono stato costretto ad eseguire un repair dell'installazione. Risultato: ho trascorso un paio d'ore a rimettere in piedi il portatile di mia moglie che, come la maggior parte degli utilizzatori, non sarebbe stata in grado, da sola, di risolvere il problema.

Va bene che il prodotto è gratuito (ma il problema riguarda anche la versione commerciale), ma un bug così evidente mi rimane difficile pensare che sia potuto sfuggire anche al più distratto dei beta tester.

 

Posted by lbianchi with 4 comment(s)
Filed under:

Congratulations on Your Microsoft Certification!

Questo il subject della mail che stamattina mi ha ufficializzato di aver superato l'esame 70-450 che, lo scorso settembre, ho sostenuto in versione beta.

Questo esame, insieme all'altro che ho sostenuto lo scorso giugno, mi consegnano nelle mani la certificazione MCITPRO-Database Administrator 2008 che da qualche ora compare nel mio transcript... Smile

Posted by lbianchi with 1 comment(s)
Filed under:

Days08 - Novità nel T-SQL in SQL Server 2008

Giovedì scorso si è tenuta la tappa fiorentina del Days08. In tutte le sedi che saranno toccate dall'evento ci saranno i Community After Hour le cui sessioni saranno, di volta in volta, tenute da una diversa community. Per la track MSDN la tappa di Firenze sono state organizzate da Visual Basic Tips & Tricks e sul palco si sono alternati Alessandro Del Sole, il sottoscritto e Gianluca Cannalire.

Prima dell'evento si nutrivano forti dubbi sulle aspettative di partecipazione: le sessioni dell'after hour iniziavano alle 19 e si sarebbero protratte fino alle 22. Dopo una giornata densa di sessioni MSDN/TechNet iniziate alle 9:30 di mattine, quanti avrebbero avuto la forza, la possibilità e la lucidità per una vera e propria maratona? Beh, durante la sessione di Alessandro ho contato circa 55 persone presenti in sala, circa la metà delle quali arrivate esclusivamente per l'after hour.

La mia sessione incentrata sulle novità del Transact SQL introdotte con SQL Server 2008 è scivolata via liscia e sono riuscito a tenere desta la platea. Ovviamente è possibile scaricare sia le slide che le demo.

 Bye

Posted by lbianchi with no comments

Un after hour a Firenze...?

Giovedì prossimo a Firenze, nell'ambito del Community After Hour organizzato da MSDN, terrò una sessione sulle novità del T-SQL in SQL Server 2008.

Le sessioni dell'after hour sono al termine del Microsoft Days08 e vedranno alternarsi sul palco, nella track MSDN, Alessandro Del Sole e Gianluca Cannalire oltre al sottoscritto. Come al solito si tratta di una occasione per dare un volto a molti di coloro che frequentano le diverse community ed invito chi è nella zona a partecipare a questo evento targato Visual Basic Tips & Tricks...

Per partecipare è indispensabile iscriversi a questo link.

See you there... ;-)

 

Posted by lbianchi with no comments
Filed under: ,

Microsoft Certified Technology Specialist: SQL Server 2008

Lo scorso giugno ho sostenuto l'esame 71-432 relativo a SQL Server 2008 (MCTS: SQL Server 2008 Implementation and Maintenance). Trattandosi di un esame in versione beta, l'esito dello stesso non viene notificato immediatamente al termine dell'esame, ma comunicato successivamente.

Ieri mattina ricevo una mail di Lorenzo Benaglia che mi comunicava di aver ricevuto la mail con l'esito positivo dell'esame; io la mail non l'avevo ancora ricevuta e se da un lato ho pensato che è normale che in questi casi possano essere inviate non tutte insieme, dall'altro ha cominciato a farsi avanti il sospetto che non avessi superato l'esame. E dire che l'avevo trovato estremamente semplice... Big Smile

Beh, questa mattina ho ricevuto anch'io la mail... adesso attendo con fiducia l'esito degli altri 3 esami sostenuti nelle scorse settimane...

Bye

 

Posted by lbianchi with 4 comment(s)
Filed under:

SQL Server Experience

E' stata resa disponibile una nuova risorsa per clienti e partner: SQL Server 2008 Experience disponibile anche in lingua Italiana. Il sito offre diverse tipologie di contenuti:

  • Interviste brevi ad engineer del team di sviluppo di SQL Server 2008
  • Guidance su diversi argomenti quali business intelligence, compliance, percorsi di aggiornament, sviluppo di applicazioni e altro
  • Screencast delle più importanti e nuove funzionalità di SQL Server 2008
  • Case Studies di clienti World Wide che hanno già adottato SQL Server 2008
  • Sconti su libri, corsi ed esami per SQL Server 2008.

All’interno del sito i contenuti sono divisi per audience: ITPro e Dev e con l’aggiunta di una sezione “fun” in cui potrete farvi due risate

Buona "SQL Server Experience"... :-)

Posted by lbianchi with 2 comment(s)
Filed under: , ,

Generare script per ricostruire la sequenza di ripristino

Qualche tempo fa ho pubblicato un post per ricostruire la sequenza di ripristino di un database sulla base dei backup eseguiti.

Quello script si basa sul presupposto che tutti i backup di uno stesso database si trovino all'interno dello stesso file/device. Il presupposto deriva da una mia abitudine che, proprio per non dover cercare tra n file dove sta il backup y eseguito dopo il backup x, prevede l'esecuzione dei backup di diverso tipo (full, differenziale e del t-log) in un unico file. In occasione del backup full provvedo a reinizializzare il device ma, ovviamente, salvaguardandomi quello precedente attraverso una attività di rename (non deve essere piacevole reinizializzare il device e accorgersi che qualcosa è andato storto durante il backup). Pertanto se anche voi preferite mantenere un unico file per ciascun database, oltre ovviamente ad eventuali set precedenti compatibilmente con lo spazio a disposizione, potreste utilizzare il mio script per risparmiare tempo prezioso in situazioni critiche.

Se invece preferite mantenere ogni backup su un file differente all'interno di una data cartella, ho trovato questo script che fa al caso vostro...

Bye

 

 

Posted by lbianchi with no comments

Generare script da un database

Qualche volta capita di voler generare degli script per riprodurre delle tabelle e/o il contenuto di esse. Se i database sono nella stessa lan è possibile, tramite il wizard Import/Export Data, ovvero tramite DTS/SSIS portare a termine l'attività, ma quando gli script devono essere salvati per essere eseguiti successivamente su un altro database, magari non connesso, potrebbe essere sconveniente dover portar via un backup per poi ripristinarlo e procedere al trasferimento dei dati con DTS/SSIS.

In questi casi può essere utile disporre di un tool in grado di generare gli script di inserimento dei dati partendo da una o più tabelle di origine. Ce ne sono diversi, si va da prodotti commerciali come questo di Red-Gate o quest'altro di ApexSQL a prodotti free come SQLScripter o altri.

Anche Andrea Montanari, l'autore dell'arcinoto DbaManager/DbaManager2k, ha fatto la sua parte creando 2 tools utilizzabili allo scopo. Si tratta di amScript e amInsert che possono essere utilizzati per generare, rispettivamente, gli script DDL e quelli DML per una tabella di un database. Entrambi possono essere scaricati da questo link.

Il valore aggiunto di amScript e amInsert è dato dal fatto che Andrea è notoriamente molto disponibile a ricevere feedback da parte degli utilizzatori dei suoi tools, quindi se ritenete che gli stessi possano essere arricchiti di nuove funzionalità fateglielo presente attraverso i mezzi che ritenete più opportuni, magari in occasione di un weekend a Riccione presso il suo Hotel (pubblicità per niente occulta)... Smile

Bye

 

Posted by lbianchi with 1 comment(s)
Filed under: ,

Errore 2570 e "data purity"

Eseguendo il comando DBCC CHECKDB con l'opzione WITH DATA_PURITY, ho evidenziato degli errori su un database; i messaggi erano una sfilza di errori 2570 come questo qui sotto

Msg 2570, Level 16, State 3, Line 1

Page (1:6672), slot 24 in object ID 997578592, index ID 1, partition ID 72057594241351680, alloc unit ID 72057594246987776 (type "In-row data"). Column "IMP_MOV_SIN" value is out of range for data type "decimal". Update column to a legal value.

Si trattava di ben 126 eventi, tutti sulla stessa tabella, e tutti sul medesimo campo (in realtà erano 63 errori nelle pagine dati ed altrettanti in un indice non clustered dove il campo era nella clausola INCLUDE). Una ricerca nella kb mi portava a questo articolo che dava anche una soluzione per venire a capo del problema. Si trattava quindi di individuare, con una query, quali erano i record fuori dal range ammesso per il tipo dati in questione. Trattandosi di un campo definito come DECIMAL (11, 2), eseguivo l'istruzione

SELECT *
FROM dbo.Tabella
WHERE IMP_MOV_SIN > 999999999.99
    OR IMP_MOV_SIN < 999999999.99

come suggerito dall'articolo stesso. Questa query però non restituiva alcun record ed anche ci fosse stato qualche record "out-of-range" il problema successivo sarebbe stato quello di riportare il valore "in-range". Si, ma come...? Come avrei potuto scegliere arbitrariamente un valore per ciascuna delle 126 occorrenze dell'errore? Si sarebbe reso necessario comunque l'intervento dell'utente per bonificare tali dati con valori esatti e non solo congruenti.

Tuttavia se non c'erano valori "out-of-range" qualcosa doveva essere successo a quei 63 record, ma cosa? Beh, senza pensarci troppo ho fatto qualche tentativo nell'ambiente di test ampliando il datatype da un DECIMAL(11, 2) ad un DECIMAL(38, 20) per poi riportarlo a quello originario. Ho pensato che se il problema fosse dipeso dal fatto che qualcuno di quei 63 record avesse un numero "errato" di decimali avrei così sistemato il problema. Beh, la cosa ha funzionato! Cool

Prove successive, ripristinando nuovamente il database corrotto nel solito ambiente di test, mi hanno fatto trovare una soluzione ancora migliore, ovvero quella di fare un update del genere

UPDATE dbo.Tabella
SET IMP_MOV_SIN = IMP_MOV_SIN * 1

ed anche questa soluzione avrebbe risolto il problema in maniera più efficace rispetto alla modifica del datatype (nel frattempo avevo già corretto con la prima soluzione l'ambiente di produzione).

Spero che possa tornare utile a qualcuno... Wink

 

Bye

 

 

Posted by lbianchi with no comments
Filed under:

User Instance... la fine è vicina!

Come più volte ho avuto modo di ribadire, nei forum e newsgroup dedicati a SQL Server, avrei preferito che questa "funzionalità" (il virgolettato è d'obbligo) non fosse mai stata introdotta in SQL Server. Purtroppo, però, nella versione 2005 è stata introdotta la possibilità di utilizzare, solo nella versione Express, il motore relazionale come se fosse un database monoutente. Ma la cosa ancora peggiore in tutto questo è che qualcuno usa le User Instance, note anche come RANU (Run As Normal User)... Sad

Pochi minuti fa l'amico Andrea mi ha segnalato questa pagina del BOL di SQL Server 2008 dove compare in bella evidenza la dicitura "Important: This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature."

Evidentemente qualcuno nel team di sviluppo si è reso conto che introdurre le User Instance in SQL Server 2005 ha prodotto più danni che benefici e se qualcuno mi porta un valido motivo per utilizzare le User Instance si faccia avanti... è lo stesso invito che rivolgo nei forum/newsgroup quando si parla di RANU ma finora nessuno è stato in grado di dare motivazioni valide (che è diverso dal dire "condivisibili").

Bye

 

Posted by lbianchi with no comments
Filed under:

Internet mobile

Nelle scorse settimane sono stato in Polonia e per restare connesso alla mia mailbox e per poter leggere i miei feed RSS (difficile seguire i TG e le Olimpiadi alla TV polacca Big Smile), mi sono messo alla ricerca di una tariffa più conveniente possibile per collegarmi ad internet dal telefono e/o dal palmare.

Con i nostri gestori siamo abituati a leggere le tariffe di connessione espresse in kb e, se non si sottoscrive un piano semi-flat, ogni MB costa diversi euro il che rende estremamente costoso navigare in internet in mobilità.

Sono rimasto molto sorpreso nello scoprire che in Polonia le tariffe sono molto più convenienti che in Italia: navigare in internet con il telefonino costa pochi centesimi di euro a MB. Mi è bastato acquistare una SIM locale (costo 20 zloty, circa 6,50 euro) per avere a disposizione oltre 66 MB di traffico; poco meno di 10 centesimi di euro a MB.

Bye

 

Posted by lbianchi with 1 comment(s)
Filed under:

Foreign key o non foreign key

Molto spesso mi imbatto in strutture dati che non implementano foreign key demandando l'integrità referenziale alla logica applicativa. Personalmente non ho mai condiviso questo tipo di approccio al di la del fatto che "possa funzionare" (almeno finchè non vengono fatte attività al di fuori dell'applicazione).

In questo post di Conor Cunningham viene posto in risalto come anche i piani di esecuzione che vengono generati possono essere influenzati dalla presenza o meno di una FK.

Qualora ce ne fosse bisogno... un altro buon motivo per non rinunciare alla definizione delle foreign keys...

Bye

 

Posted by lbianchi with 1 comment(s)
Filed under:

SQL Server 2008 in RTM!!!

Durante la keynote del TechEd South Africa è stata ufficializzata la nascita di SQL Server 2008 come riportato in questo post.

Da MSDN è già possibile fare il download... Smile

Bye

 

Posted by lbianchi with no comments
Filed under:

Bellissima sull'Iphone... :-)

Dal blog di Pierluigi Malusardi questa simpatica storiella di come un'abile strategia di marketing possa trasformare un oggetto comune in un gioiello... :-)

Posted by lbianchi with 1 comment(s)
Filed under:

In arrivo una fix di sicurezza per SQL Server

La notizia è di quelle importanti: è stato trovato un bug di sicurezza in SQL Server.

Qualcuno non resterà stupito dal fatto che sia stato trovato un bug di sicurezza in un prodotto MS, ma molti forse neanche ricordano l'ultimo problema di sicurezza di SQL Server. Da allora sono passati oltre 5 anni ed oggi ho avuto notizia che nel prossimo bollettino mensile che sarà emesso l'8 luglio comparirà un avviso relativo a SQL Server. Al momento è disponibile solo un "advanced notification".

Credo che questa notizia non farà il giro del mondo come spesso accade quando un problema riguarda un prodotto di MS, perchè ciò significherebbe anche dare risalto al record raggiunto. Oltre 5 anni senza bug di sicurezza (e nessun bug in quasi 3 anni dall'uscita di SQL Server 2005) sono un record che credo nessun database server abbia mai raggiunto.

Bye

 

 

 

Posted by lbianchi with no comments
Filed under: ,
More Posts Next page »