А причем тут в названии SQL Server? Так и напишите MSSQL, так как проблема относится к реализации языка SQL от Microsoft, а вовсе не некоему мифическому продукту SQL Server (Тем более он называется Microsoft SQL Server, а не просто SQL Server — это огромная разница)
Взял выборку ~5500 строк (база персонала попалась под руку, группировка по году рождения для примерно равномерного распределения, аггрегация по фамилиям).
Результаты примерно такие:
SQL-ная хранимка: 00:00:00.1230000 (от 0.114 до 0.132)
XML-ное «собирание»: 00:00:00.1450000 (от 0.135 до 0.155)
CLR-ный аггрегат: 00:00:00.0670000 (от 0.050 до 0.085)
Числа, конечно, варьируются, но в среднем где-то так. При первом запуске CLR-ка, естественно, работала немного дольше (примерно как вариант с SQL-ной хранимкой) — начальная загрузка сборки в память требует времени.
5 cпособов осуществить агрегацию строк в MS SQL