Jeg synes, UDF'er er meget praktiske, og jeg bruger dem hele tiden.
Jeg er ikke sikker på, hvad Microsofts begrundelse er for ikke at inkludere en sys.functions-ækvivalent i SQL Server 2005 (eller SQL Server 2008, så vidt jeg kan se), men det er nemt nok at rulle din egen:
CREATE VIEW my_sys_functions_equivalent
AS
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') -- scalar, inline table-valued, table-valued