A colleague of mine discovered that many of our linked-server SQL queries were running very slowly on SQL Servers running Windows Server 2008 and Windows Server 2008 R2. Since the linked-server SQL queries ran perfectly on Windows Server 2003 servers, the issue had to be Windows Server 2008+ specific. The culprit ended up being the Windows Scaling Heuristics and TCP Auto-Tuning that are enabled by default on Windows Vista, Windows 7, Windows Server 2008, and Windows Server 2008 R2.
To remedy the situation, Windows Scaling Heuristics and TCP Auto-Tuning simply need to be disabled.
On the SQL server open an elevated Command Prompt window (run Command Prompt as Administrator)
To disable Windows Scaling Heuristics, run the following command:
[shell]netsh int tcp set heuristics disabled[/shell]
To disable TCP Auto-Tuning, run the following command:
[shell]netsh int tcp set global autotuninglevel=disabled[/shell]
Restart the SQL Server server (a reboot is not necessary, just restart the SQL service)
After disabling Windows Scaling Heuristics and TCP Auto-Tuning you should see a noticable increase in performance on your linked-server SQL queries.