DA http://msdn.microsoft.com/en-us/library/ ms187373.aspx NOLOCK Equivale a READUNCOMMITTED. Per ulteriori informazioni, vedere READUNCOMMITTED più avanti in questo argomento.
READUNCOMMITED leggerà le righe due volte se sono oggetto di una transazione, poiché entrambe le righe di rollforward e rollback esistono all'interno del database quando la transazione è IN elaborazione.
Per impostazione predefinita, tutte le query vengono lette con commit che esclude le righe non vincolate
Quando inserisci in una tabella temporanea, select ti darà solo righe impegnate:credo che questo copra tutti i sintomi che stai cercando di spiegare