El DMO (Distributed Management Objects) es un conjunto de objetos programables que facilitan la realización de varias tareas SQL (7 y 2000, para SQL 2005 se usa SMO) de manera programática.
Trabajando con una aplicación que generaba el script de un objeto predeterminado en dos o más varias bases de datos para su posterior comparación, nos encontramos con que en algunas máquinas, al intentar obtener el objeto SQL del que se quería generar el script, el DMO lanzaba el error
[SQL-DMO] invalid database-object type. Evidentemente éste no era un error en la programación ya que la aplicación funcionaba correctamente en 25 de 30 equipos usuario; debía ser alguna configuración o requerimiento no reconocido como tal.
Tras tres días de estar buscando, ya al final, a prueba y error, descubrí que era necesario el paquete de
SQL Server 2005 Backward Compatibility Components. Instala alguna serie de cosas que permite el correcto funcionamiento del DMO y eso solucionó el problema. Aunque el detalle de qué componente es el que corrige el error no lo conozco aún, el problema se solucionó en aquella ocasión. Se volvió a presentar luego cuando alguien instaló SQL 2008, pero se corrigió instalando el paquete de Backward Compatibility más reciente.
SQL Server 2005 Backward Compatibility Components