Ваше репро очень креативно.Это интересный случай.
Попробуйте запустить 100 SqlCommands с текстом команды "WAITFOR DELAY '02: 00 ';"и понаблюдайте за тем, как происходит подсчет потоков с течением времени (запустите таймер, который печатает статистику).
Я предполагаю, что мы увидим, что потребляется гораздо меньше 100 потоков (то есть эта часть асинхронного поведения работает).По какой-то причине SqlCommand использует «неправильные» потоки пула потоков, но это может совсем не снизить масштабируемость.