It's a good day. It's spring in Virginia, my broken leg is almost healed (the cast came off Monday), and Microsoft has issued a hotfix for Windows 2000 Terminal Services that should help resolve the Terminal Server Client Access License (TSCAL) problem. Considering the importance of the last item, my leg could still be in the cast and it could still be February, and it would STILL be a good day.

If you don't know what the TSCAL problem is, read on. Historically, licensing for Win2K terminal server in Application Server Mode has worked like this: Microsoft licensed access to a Windows terminal server on a per-seat basis. When you accessed a terminal server from a client device, the terminal server checked to see whether that client device had a TSCAL for accessing the terminal server. If the client device already had a TSCAL (either a previously assigned one or one from a Win2K Professional machine with a built-in license), the client logged on. If it didn't, the terminal server contacted the license server, which assigned a TSCAL to that client device and permanently stored it on the client's hard disk. The license server associated that TSCAL with the client, moving it from the "available" pool to the "assigned" pool, then the client could log on. If you reformatted or retired a computer, its TSCAL disappeared, and the license server was none the wiser—the TSCAL didn't go back to the license server. In addition, a machine that logged on to the terminal server only once ate a TSCAL. Buggy clients could also eat TSCALs if they didn't "remember" that they had licenses. The only way to get a lost license back was to call the Microsoft clearinghouse and get a new license key.

Until a few days ago, the system worked that way, which was a real sticking point for terminal services adoption. However, Microsoft has now issued a hotfix that helps resolve the problem. Although the hotfix doesn't fix ALL licensing woes, it addresses the problem of one-time users inadvertently walking off with TSCALs. You can read the Microsoft FAQs about this topic (listed in Microsoft articles Q287687 and Q294655), but here's the gist.

After you apply the hotfix to all your terminal and license servers, the license server will give first-time requesters a TSCAL with a timeout period (a randomly assigned interval between 52 and 89 days). When the user logs on to the terminal server, the terminal server tells the license server that the license has been validated (i.e., used by someone with permission to log on to the terminal server). The TSCAL is then assigned to that machine. Every time someone connects to the terminal server from that machine, the terminal server will check the TSCAL's expiration date—if it's in less than 7 days, the terminal server renews the TSCAL assignment to that machine for another 52 to 89 days. If the client machine doesn't log on to the terminal server before its TSCAL expires, its TSCAL returns to the pool of available licenses.

This fix applies only to TSCALs assigned after you apply the hotfix to your terminal and license servers. If you lose the license database because of a hard disk crash or other catastrophe, call the clearinghouse to get your licenses back. The system still assigns licenses to machines, not to users, so you can still run out of TSCALs if Joe User logs on to the terminal server from every device he can think of. However, the licensing model should now let unused licenses return to the pool of available licenses, and that's definitely good news.