Je trouve que les UDF sont très pratiques et je les utilise tout le temps.
Je ne suis pas sûr de la raison pour laquelle Microsoft n'inclut pas d'équivalent sys.functions dans SQL Server 2005 (ou SQL Server 2008, pour autant que je sache), mais il est assez facile de lancer le vôtre :
CREATE VIEW my_sys_functions_equivalent
AS
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') -- scalar, inline table-valued, table-valued