Often we get asked by customers to allow their terminal server to be more than just a terminal server. They might want their Terminal Server to be a SQL server, or a Domain Controller or some such thing at the same time as being a Terminal Server. The entire concept behind a terminal server is that it’s designed to be like a large multi user desktop computer and allow multiple people to use it at the same time as a desktop…
If you take a look at your desktop computer (this is from my Win7 x64 Desktop) you will notice that the performance settings on it are tuned for Programs rather than Background Services
Take a look at any normal server (this is from my SBS 2008 server) and you will see it’s the other way around with things being tuned for Background Services
Now look at the Terminal Server – this one is a Windows Server 2008 R2 Terminal Server or Remote Desktop Server and you can see it’s tuned for Programs as well.
What does this setting do and why do I care I hear you ask?
This setting controls the way in which the CPU will allocate priority to either foreground programs (i.e. users programs) or background services (i.e. SQL server etc.)
The assumption is that Programs (foreground/user programs) require smaller, more regular chunks of time to do their work and ensure the users get a smooth responsiveness out of them. However Background Services require larger more continuous chunks of time to allow them to get their work done where the response that the user sees is not direct as it is with a foreground program. This setting permits the adjustment so that you can allocate more available processing time to either programs or services. In addition to the chunks of time, there is also the concept or processor priority with Programs getting a higher priority than background services do. All this means that when you tune a server for desktop applications, the background services can and will suffer. This may be enough to cause issues with those background applications.
Is it supported?
Well.. in a word – typically – NO. Microsoft typically do not support the user of server level programs on top of a Terminal Server due to the myriad of issues that may arise. If you do do something like this then you run the risk of being unsupported.
What about other considerations?
Other things we need to be aware of with a Terminal Server is that the users will be directly interacting with the server itself. Therefore user initiated actions may very well cause problems for other users. What happens if say a user has an Excel macro that consumes all the CPU utilisation from the server – that will normally only affect other users. However if you have server style applications running on it as well such as a SQL server, then it may very well create adverse effects on it that are even more catastrophic for other people – potentially even causing data corruption.
Consider for a moment another angle… what if we make our Terminal Server a Domain Controller. This is an interesting set of circumstances because a domain controller by default will only allow domain administrators to logon interactively with it. This means that to enable our users to logon to a server that is both a Terminal Server and Domain Controller, we need to give them Domain Admin rights. That’s like giving the key codes for my bank account to my kids… you can’t tell what might happen!
No – allowing your terminal server to be anything more than just a terminal server is in general a really bad idea and something to be discouraged at all costs. You really need to get your clients looking outside of this for the other issues that can arise – I’ve listed just some of them here, but I’m sure we all have our own.