Hi! So I have posted this question a while back but has some additional information since I am still stuck on this problem. Here is what is supposed to happen on a server: 1) SQL Server receives request from a client 2) SQL Extended procedure launches DLL 3) Launcher DLL launches Server EXE 4) Server EXE executes Server DLL attached to it to process command Now testing this on my environment (Windows XP Service Pack 3, Core 2 DUO @2.33GHz, 2GB of RAM) and another test server (Windows Server 2003 R2 Service Pack 2, Xeon CPU @3.0GHz, 3GB of RAM) by triggering the request event (from #1) 2x simultaneously works. The request is being handled in parallel by the server. I can see that there are different instances of Server EXE (#3) being created per request. The problem is with another server environment that we have (Windows Server 2003 R2 Service Pack 2, Xeon CPU @2.5GHz, 3GB of RAM). No matter what happens, there is always 1 Server EXE being created (checked this through Process Explorer by Sysinternals) and for the next requests received, the machine just adds a new thread on the same existing Server EXE process (checked this through logs, GetCurrentProcessId and GetCurrentThreadId APIs). This is a problem, since there is only 1 Server EXE, that means that all threads are also sharing the attached Server DLL to it. Making the requests being processed sequentially instead of in parallel. I have read about this and it seems to be a multi-tenant behavior on the machine but I don't know why the machine behaves that way. Anyone has any idea/clue on this problem? I'm on a dead-end right now. Thanks! Note: As an additional information, in Launcher DLL (in #3), here is an overview of the code being executed when called: HRESULT hr = ::CoInitialize(NULL); //initialize COM Library . . ServerEXEPtr ptrServerEXE; //Server EXE object instance hr = ptrServerEXE.CreateInstance(__uuidof(ServerEXEPtr)); //Create instance of Server EXE . . ptrServerEXE->ExecuteServerCommand(param); //Will call Server EXE's method ptrServerEXE.Release(); . . ::CoUninitialize();