AFAIK, you should register you service as depending on the SQL Server service, so the OS can properly determine the startup sequence. Actually, you should register any of your service's dependencies. Probably, this information is needed for the right shutdown sequence too (my conclusion here). On .NET, you have the ServicesDependedOn property on the ServiceInstaller. Another remark: by default, if your shutdown process takes more than 20s, Windows will presume your service is hung up and probably will kill your process. There's a registry entry for configuring this time. [edit]Debugging tip: Use Trace.Writeline or a interop call to OutputDebugString and use dbgview or dbmon to see it.[/edit] I see dumb people