Error loading sos.dll

Many times you get this error when you do .load sos

0:080> .load sos

The call to LoadLibrary(sos) failed, Win32 error 0n2
"The system cannot find the file specified."
Please check your debugger configuration and/or network access.
You can solve this by doing  .loadby sos clr, this means you are trying to load sos.dll from the same location you loaded clr.dll from.

This is a different error
 

0:091> .loadby sos clr

Unable to find module 'clr'

The first question I ask myself is whether I am debugging a 32 bit application with 64 bit debugger, if not the I do lm to list all loaded modules

In this case I saw that clr.dll is not loaded, but mscorwks is this is because the application I am debugging is using .net framework 2.0

0:091> lm

start             end                 module name

00000000`1b6d0000 00000000`1b9cf000   System_Data   (deferred)            

00000000`1e230000 00000000`1e279000   System_Transactions   (deferred)            

00000000`714b0000 00000000`71556000   System_Core   (deferred)            

00000000`77610000 00000000`777b9000   ntdll      (private pdb symbols)  d:\symbols\ntdll.pdb\15EB43E23B12409C84E3CC7635BAF5A32\ntdll.pdb

00000642`ffaf0000 00000642`ffb09000   mscorsec   (deferred)            

000007fe`dae40000 000007fe`db68b000   System_Data_ni   (deferred)            

000007fe`e07b0000 000007fe`e0945000   System_DirectoryServices_ni   (deferred)            

000007fe`e0950000 000007fe`e0a5d000   System_EnterpriseServices_ni   (deferred)            

000007fe`e0a60000 000007fe`e0b45000   System_Transactions_ni   (deferred)            

000007fe`eb380000 000007fe`ec25c000   mscorlib_ni   (deferred)            

000007fe`ec260000 000007fe`ecbfc000 mscorwks (deferred)             

...

0:091> .loadby sos mscorwks

That worked!

Unfortunately sometimes is it not that simple, I get this nasty error a lot 

Failed to load data access DLL, 0x80004005 
Verify that

                          1) you have a recent build of the debugger (6.2.14 or newer)  

            2) the file mscordacwks.dll that matches your version of mscorwks.dll is 
                in the version directory 
            3) or, if you are debugging a dump file, verify that the file 
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.  
            4) you are debugging on the same architecture as the dump file.  
                For example, an IA64 dump file must be debugged on an IA64 
                machine.

.cordll -ve -u -l  works most of the time

if that still doesn't work, try following the steps here

Hope that helps!