Thursday, October 01, 2009

The english version in red.

Stamattina sono venuto a conoscenza di un problema riguardante SQL 2005 e 2008; in pratica se sul server SQL viene eseguito un programma di backup a livello NTFS (terze parti ma anche NTBACKUP) e tale programma tenta di fare il backup dei file MDF/NDF di SQL Server, si potrebbe riscontrare l’ impossibilità di  effettuare il restore del database ed eventualmente notare comportamenti anomali della piattaforma.

This morning i learned about SQL server 2005/2008 strange problem; in fact if on a sql server run a backup software at NTFS level (3d part or NTBACKUP) and this program try to bakup a mdf/ndf files, maybe unable to perfrom the database restore or it' s possible see some abnormal platform behavior.

Per effettuare un controllo circa la presenza o meno del problema sopra indicato, eseguire la seguente query per ogni istanza (vale per tutti i DB) e nel caso il risultato riportasse una o più righe vuol dire che il srever è affetto dalla problematica.

To test the problem presence outlined above, run the following query for each instance (that is for all the DB)
 
               select db_name(sdb.database_id) as 'Database Name',smf.name as 'Logical File Name', smf.physical_name as 'Physical File Name', is_sparse
from sys.databases sdb join sys.master_files smf on sdb.database_id = smf.database_id
where sdb.source_database_id is null and is_sparse = 1
 
La spiegazione approfondita di questo problema ed una possibile soluzione manuale si trova consultando il link sottostante:

and if the result return one or more lines try to fix it manually as described below.
 
 
 
Ciao!
bye!

Thursday, July 23, 2009

The english version in red.
 
Qualche mese fa mi sono imbattuto in un problematica a dir poco “rognosa”; in pratica su un architettura distribuita di circa 60 server (una 50ina di server utilizzavano tecnologia Microsoft, circa 10 con Linux/Solaris e con una componente esterna DB2 su mainframe) che eroga un particolare servizio internet, in maniera del tutto casuale ed apparentemente inspiegabile, diversi web server IIS andavano in errore restituendo a video  "Server too busy" o un messaggio di crash del framework .net; inoltre restartando il servizio IIS dopo qualche ora il problema si ripresentava.
 
It was just a few months ago when I  get  involved in an hard questioning;basically on a 60 servers  distributed architecture  (50 of them were using Microsoft technology abbout 10 were usin’ Linux/Solaris and a DB2 Mainframe System) that offers a particularly internet service, unexpectedly,some of the ISS web servers occurred in error ,sometimes givin’ back the reporting message “server too busy” other ones a “framework crash message”,even if the system was started up again,nothing changed.
Visto  l'errore diedi un occhiata al traffico sui web server  che però non superava (su ognuno) le 500 sessioni concorrenti contro un traffico medio di 700 sessioni concorrenti e picchi di 900-1100;  a quel punto decisi di indagare altrove. Un primo e veloce nestat sui web server mi fece notare che c’erano diverse chiamate tcp in TIME_WAIT verso gli application server in back end e quel punto, dopo un po’ di controlli, decisi di prendere un dump dei processi COM+ che giravano sugli stessi application server.
So I took a look to the webserver traffic but it did not exceed the value of 500 concurrent sessions in spite of 700 medium value and 1100 edges.So using netstat I noticed that there were a lot of time/wait calls to application server in back end so after various checks I had a dump of COM+ processes (runnin’ on the same application server).
Analizzando il dump con WinDbg notati che la maggior parte dei threads erano in attesa di dati (WaitForSingleObject) in particolare da 2 threads (threads 19 e 57 ); successivamente andando ad analizzare i 2 threads notati una cosa molto interessante, ovvero che entrambi i threads stavano  effettuando una chiamata via rete ad un web services interno utilizzando l’ API WinInet (testo in blu) :
WinDbg was a friend in need,because I noticed that many threads were waitin’ for objects (WaitForSingleObject),in particularly 2 threads (19-57).I scanned the threads and I realized that 19-57 threads were using API WinInet for a netcall to an internal web service (text in blue) :
Threads 19
Function

ntdll!KiFastSystemCallRet  
ntdll!NtWaitForSingleObject+c  
mswsock!SockWaitForSingleObject+19d  
mswsock!WSPRecv+203  
ws2_32!WSARecv+77  
wsock32!recv+31  
wininet!ICSocket::Receive_Continue+87  
wininet!ICSocket::Receive_Start+bb  
wininet!CFsm_SocketReceive::RunSM+3b  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!ICSocket::Receive+3e  
wininet!ICSecureSocket::NegotiateLoop_Fsm+1bc  
wininet!CFsm_NegotiateLoop::RunSM+2e  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!ICSecureSocket::SSPINegotiateLoop+3b  
wininet!ICSecureSocket::SecureNegotiate_Fsm+2a4  
wininet!CFsm_SecureNegotiate::RunSM+2e  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!ICSecureSocket::NegotiateSecConnection+2f  
wininet!ICSecureSocket::SecureHandshake_Fsm+db  
wininet!CFsm_SecureHandshake::RunSM+2e  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!ICSecureSocket::SecureHandshakeWithServer+2c  
wininet!ICSecureSocket::Connect_Fsm+67  
wininet!CFsm_SecureConnect::RunSM+2e  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!ICSecureSocket::Connect+32  
wininet!HTTP_REQUEST_HANDLE_OBJECT::OpenConnection_Fsm+3b1  
wininet!CFsm_OpenConnection::RunSM+33  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!HTTP_REQUEST_HANDLE_OBJECT::OpenConnection+2f  
wininet!HTTP_REQUEST_HANDLE_OBJECT::MakeConnection_Fsm+87  
wininet!CFsm_MakeConnection::RunSM+2e  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!HTTP_REQUEST_HANDLE_OBJECT::SendRequest_Fsm+9b  
wininet!CFsm_SendRequest::RunSM+2e  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!HTTP_REQUEST_HANDLE_OBJECT::HttpSendRequest_Start+450  
wininet!CFsm_HttpSendRequest::RunSM+59  
wininet!CFsm::Run+39  
wininet!DoFsm+25  
wininet!HttpWrapSendRequest+127  
wininet!HttpSendRequestA+1d  
e24PaymentPipe!Createe24PaymentPipe+c68  
e24PaymentPipe!DllUnregisterServer+5e87  
rpcrt4!Invoke+30  
rpcrt4!NdrStubCall2+299  
rpcrt4!CStdStubBuffer_Invoke+3f
  
oleaut32!CUnivStubWrapper::Invoke+c5  
ole32!SyncStubInvoke+37  
ole32!StubInvoke+a7  
ole32!CCtxComChnl::ContextInvoke+ec  
ole32!MTAInvoke+1°  
ole32!STAInvoke+48  
ole32!AppInvoke+a3  
ole32!ComInvokeWithLockAndIPID+2c5  
ole32!ComInvoke+ca  
ole32!ThreadDispatch+23  
ole32!ThreadWndProc+fe  
user32!InternalCallWinProc+28  
user32!UserCallWinProcCheckWow+151  
user32!DispatchMessageWorker+327  
user32!DispatchMessageW+f  
comsvcs!CSTAQueueLessMessageWork::DoWork+4e  
comsvcs!CSTAThread::DoWork+18  
comsvcs!CSTAThread::ProcessQueueWork+37  
comsvcs!CSTAThread::WorkerLoop+190  
msvcrt!_endthreadex+a3  
kernel32!BaseThreadStart+34 

Socket properties:

Source Port 4066
Destination IP 192.168.X.X
Destination Port    443

In particolare la chiamata al web services veniva effettuata tramite un metodo chiamato “Createe24Payment”  di una dll “e24PaymentPipe.dll”  che girava all’interno dello stesso processo dllhost.exe dell’ applicazione.

Particullary  the webservice call was implemented usin’ a “Createe24Payment”  method   (“e24PaymentPipe.dll”) included in the dllhost.exe of the application.

Tutto  questo creava 2 tipi di problemi :

1- la serializzazione della maggior parte dei threads verso  2 threads che effettuavano le chiamate verso questo web services (in questo caso il thread 19 e il 57)
2- il fatto che, con l’uso della API “Wininet” da parte della “e24PaymentPipe.dll”, le connessioni simultanee verso il webservices interno erano al massimo 2.


So there were two kind of problem:

-        A serialize of threads to two particullary threads that were doing calls to this web service
 (thread n°19,
thread n°57)
-        API WinNet supports two maximum simultaneous connections to webservices

Tutto questo mandava in hang (e alcune volte addirittura in crash) il processo dllhost.exe presente sugli application server COM+ all’interno del quale girava l’applicazione e di conseguenza i web server rimanevano in attesa delle risposte fatte agli  application server. In pratica le chiamate al web services effettuate tramite il metodo “Createe24Payment “ di questa dll rappresentavano una strozzatura visto la natura stessa dell’ API WinInet; questa libreria infatti rappresenta un vecchio modo di programmare utilizzato ancora da alcuni sviluppatori per gestire comunicazioni di rete e poco scalabile; la WinInet infatti fu sviluppata da Microsoft anni fa per l’utilizzo con Internet Explorer.

These were causes of hang and crash of dllhost.exe on COM+ application servers,so web servers were waitin’ for application servers. Webservice calls implemented through “Createe24Payment “ method was a problem due to Api WiInet nature,infact this library is obsolete and it was used for net communications.Api WinNet was implemented by Microsoft just for Internet Explorer.

L’utilizzo della Wininet è una soluzione che in genere non viene utilizzata in ambienti server side proprio perché non riesce a scalare più di 2 connessioni.  Infatti da un veloce netstat fatto sugli application server notai che, in diversi momenti della giornata, le connessioni erano sempre al massimo 2 :
 
WinNet solution is not very popular in the server side,because it doesn’t support more of 2 connections,that’s was confirmed to me by using netstat :
C:\Documents and Settings\gianluca>netstat -n  |find "192.168.X.X"

  TCP    192.168.X.X:4066       192.168.X.X:443      ESTABLISHED

  TCP    192.168.X.X:4087       192.168.X.X:443      ESTABLISHED

 

cosa che non tornava assolutamente conoscendo il traffico del servizio.

A questo punto visto che la problematica era ben circoscritta a questa DLL“e24PaymentPipe.dll”   sviluppata esternamente, chiesi subito di segnalare questa anomalia al fornitore (un azienda americana) che, dopo un pò, ci rilasciò la relativa versione rivista e corretta. L’analisi che feci a suo tempo fu effettuata su un campione di 3 dump presi in giorni differenti e, fortunatamente , in tutti e 3 casi Il problema era molto evidente.
 
Quindi occhio che se utilizzate la dll “e24PaymentPipe.dll”   o comunque qualche sviluppatore ha deciso di gestire le comunicazione server 2 server nel proprio codice utilizzando la WinInet potreste incappare nella stessa problematica.
 

So “e24PaymentPipe.dll” was the problem and I reported it to the American developer company,in the end they gave us the right new version. Tests were did with Dump on three different days and in each day the problem was noticeable
So be aware if you’re using “e24PaymentPipe.dll,you can get in hard troubles.
Bye.
 
Di seguito alcuni articoli e testi utili ad approfondire la problematica ed analizzare dump :
If you want more:
Articoli relativi alla WinInet :
 
“Using WinInet in server side applications to make network calls is not recommended since Wininet was designed for client side applications in mind. For example, Wininet limits the number of simultaneous connections to a web server to not more than 2. This can have a serious performance impact causing hang like symptoms.”
 
 
 
 
Debugging Tools for Windows :
 
 
 
Testi utili :
 
Advanced Windows Debugging - Addison-Wesley Microsoft Technology Series
Mario Hewardt and Daniel Pravat
 
Windows® Internals, Fifth Edition – Microsoft Press
Mark E. Russinovich and David A. Solomon with Alex Ionescu


Thursday, April 30, 2009

The english version in red

Stavo parlando proprio lunedì scorso con un amico circa alcune features mancanti in Hyper-V  che potevano rendere sicuramente più robusta la soluzione e dargli un "respiro" più enterprise....

Ebbene da un post di PierGiorgio  che trovate qui : 

(http://blogs.technet.com/pgmalusardi/archive/2009/04/21/e-ufficiale-microsoft-hyper-v-server-2008-r2-sar-gratuito-e.aspx)

sembra proprio che nella prossima versione di Hyper-V ci sia il supporto per il "Live Migration" che per l' alta affidabilità degli host fisici.

Bella notizia.

 

It was just Monday when I was talkin' with a friend about Hyper V missing features.In our opinion they could make the solution stronger and give to it an "enterprise" peculiarity.

So,never say never,as you can see in PierGiorgio's post (you can find it here :

http://blogs.technet.com/pgmalusardi/archive/2009/04/21/e-ufficiale-microsoft-hyper-v-server-2008-r2-sar-gratuito-e.aspx),

it seems that in the next Hiper-V version,we'll find two new features : "The Live Migration support" and "High reliability for HyperV host"

A good news.

Thursday, October 23, 2008

The english version in red

Ciao,

in questi giorni mi sono occupato di automatizzare una serie di task su alcuni server; in particolare, per alcuni che utilizzavano il servizio "Microsoft Distributed Transaction Service" per effettuare transazioni distribuite su 2 basi dati diverse, mi serviva automatizzare il reset del log per risolvere alcune transazioni pending e far ripartire il servizio.

Dopo un pò di ricerche ho appurato che la riga di comando per il DTC non è documentata benissimo su Technet (la documentazione di prodotto non ne parla) ma dopo un pò sono comunque riuscito a recuperare l' informazione che mi serviva.

in pratica l'opzione che ho usato è : "-resetlog"

msdtc.exe -resetlog

ma ne esitono anche altre del tipo : "–install" e "–uninstall" dal significato molto chiaro :)

 

These days i was totally involved on automation of particulary tasks on servers, these ones who use "Microsoft Distributed Transaction Service" to implement transactions were distributed on two different databases.

I needed to automate the log reset to resolve some pending transactions and restart the service.After a while, i come to the conclusion that Technet doesn't give to the users so much support about the DTC line command.

But in the end I found what I was lookin' for.I used -reset log line command

msdtc.exe -reset log

You can use also "-install" "-unistall"


Monday, September 08, 2008

The english version in red

Oggi è il giornata della virtualizzazione a Seattle; una giornata intera dedicata alla suite di prodotti Microsoft per la virtualizzazione.

Altre notizie le potete trovare sul blog di PierGiorgio, compreso l'annuncio della disponibilità per il download libero di Hyper-V tra 30 gg.

http://blogs.technet.com/pgmalusardi/archive/2008/09/08/oggi-in-microsoft-il-giorno-della-virtualizzazione.aspx

Insomma buone notizie :)

 

Today is the virtualization day at Seattle, a full immersion in a Microsoft Virtualization suite.

Other news will be found on Pergiorgio's blog at  :

http://blogs.technet.com/pgmalusardi/archive/2008/09/08/oggi-in-microsoft-il-giorno-della-virtualizzazione.aspx

Other announcement is the available free download for Hypoer-V between 30 day.

Really a Microsoft good news :)


 

Thursday, July 17, 2008

Tratto da un thread su Telefonino.net.

Ma sarà solo una moda ?!?   Comunque io preferisco di gran lunga in mio TyTNII :)

I : Ciao Diamond!
D : Ciao Iphone! Ti trovo un poco ingrassato...
I : Bhè, sono cresciuto, ora sono UMTS e ho anche il GPS, ma la mia interfaccia non ne ha risentito, è agile e scattante come prima...E tu? Per il tuoi problemi, hai risolto?
D : Ma, vedi, il mio personale trainer (XDA n.d.B.), continua ad allenarmi con nuovi tweaks e ora sono diventato agile pure io, in più con diversi cicli di cariche, la mia batteria è molto migliorata! Scusa, ma hai detto UMTS e GPS? Che bello, ora il tuo padrone ti può usare come modem e navigatore...!!!!
I : Ehm...a dire il vero...posso usare solo Google earth e l' UMTS mi serve solo per accedere alla rete dal telefono...
D : Che sfigx! Vabbè non si può pretendere tutto! se vuoi puoi fare un filmato del mio TomTom o di iGO e farlo vedere al tuo padrone...
I : Non posso fare video....scusa un attimo, ma, il mio padrone mi sta aprendo Safari per scaricare una suoneria...ma...come? sta bestemmiando? Cavolo ma lo sapeva che non posso fare i download!
D : Tranquillo te lo scarico io con Opera e te lo invio col Bluetooth
I : Ehm, non lo sai? ho il Bluetooth bloccato..
D : Bhè vabbè. Non puoi avere tutto. Dai te lo invio via MMS...
I : ...a ... dire .... il ... vero....non ho gli MMS!
D : Cavolo! Non ti preoccupare, non puoi avere tutto. Ok dai te lo invio via mail e poi te lo imposti come suoneria.
I : No guarda lascia stare... NON POSSO impostarlo come suoneria, devo spostarlo a mano via SSH...Basta dai...
D : Ok ho capito, ma avrai un file explorer per spostarti i file?
I : NO...NO...NO CE L' HO E BASTA....Lasciami perdere...
D : Cavolo ma saprai fare qualcosa? O sei bello e basta?
I : Certo, telefono e invio SMS come non mai...
D : Ah ecco, ora si spiegano i 499 euri che vali....

 

Tuesday, June 24, 2008

The english version in red

La settimana scorsa un amico mi ha girato in documento comparativo tra il prossimo SQL2008 e Oracle 11G.

Le differenze tra i 2 prodotti le potete trovare in questo white paper :

http://www.microsoft.com/sqlserver/2008/en/us/sql2008-oracle11g.aspx

 

The last week my friend forward a very interesting article about the next SQL2008 and Oracle 11G.

The difference between the two product can be found in this white paper :

http://www.microsoft.com/sqlserver/2008/en/us/sql2008-oracle11g.aspx

 

Wednesday, May 28, 2008

The english version in red


Ieri è stato pubblicato un mio articolo riguardante le prinipali novità su SQL2008 per tutti i sistemisti e DBA.

L' articolo lo potete trovare qui :

http://www.sysadmin.it/Risorse/GuideeArticoli/tabid/63/articleType/ArticleView/articleId/67/language/it-IT/SQL-2008-KATMAI-Le-novita-per-Sistemisti-e-DBA.aspx

e qui :

http://www.microsoft.com/italy/technet/prodtechnol/sql/2008/katmai.mspx

 

Yesterday was published my article about the news on SQL2008 for all sistemisti and DBA.

The article can be found here :

http://www.sysadmin.it/Risorse/GuideeArticoli/tabid/63/articleType/ArticleView/articleId/67/language/it-IT/SQL-2008-KATMAI-Le-novita-per-Sistemisti-e-DBA.aspx


or here :

http://www.microsoft.com/italy/technet/prodtechnol/sql/2008/katmai.mspx


I hope can be useful

Gianluca.

Wednesday, March 19, 2008

The english version in red

oggi il team di sviluppo ha annunciato il rilascio della RC0 di Hyper-V, le maggiori novità sono :

Today the developer team announced th Hyper-V RC0 released, the major improvement are :


• Hyper-V MMC allowing for remote administration of Hyper-V servers from Vista SP1
• Support for Windows Server 2003 x86 2-way SMP
• Partial Localization. Hyper-V Release Candidate is partially localized in Japanese & German. This means that when Hyper-V is enabled on Windows Server 2008 Japanese or German many of its text strings will appear properly translated. In other cases, text strings may still appear in English. Hyper-V will be full localized at Hyper-V RTM.

• Numerous bug fixes for:

o International Locales: The Hyper-V Beta could only be enabled on an EN-US locale. Hyper-V Release Candidate can now be enabled on international locales; however, Hyper-V Release Candidate is only partially localized for Japanese and German. Thus, if you enable Hyper-V Release Candidate on any other language (such as Spanish, French, or Italian) it will appear in English
o Compatibility: Compatible with more hardware configurations
o Stability: Numerous issues under heavy load have been addressed
o Performance improvements          
o Additional fixes for scalability and reliability


In pratica hanno risolto anche il bug con il quale ci scontrammo tempo fà per il quale non era possibile installare il ruolo Hyper-V su un server con regional setting diversi da EN-US.

The team has solved also the bug that inhibited installing an Hyper-V role on a server with a different EN-Us  regional settings.

Buon testing a tutti.

Good testing to all.

Monday, January 14, 2008