Probé esta lógica con varios casos extremos y parece funcionar.
SELECT DATEDIFF(d, @dFrom, @dTo)/7+1
+ CASE WHEN DATEPART(dw,@dFrom) IN (1,7) THEN -1 ELSE 0 END
+ CASE WHEN DATEPART(dw,@dTo) IN (1,7) THEN -1 ELSE 0 END
Puede cambiar las sentencias CASE según cómo desee manejar los casos en los que la fecha de inicio o finalización es un fin de semana. En mi caso no incluyo el fin de semana si la fecha de inicio o fin es sábado o domingo.