Ya he encontrado el fallo.
Lo pone bien clarito en los libros en pantalla de SQLServer
Si se utiliza una instruccion select que devuelva resultados hay que añadir una clausula SET NOCOUNT al principio del trigger para que no devuelva nada a la aplicacion, por eso funcionaba a nivel de BD y fallaba a nivel de aplicacion.
Como la mayoria de informaticos, lo ultimo que hago es leer la documentacion.
Saludos y gracias a todos.