Altova MapForce 2023 Enterprise Edition

Para cambiar un componente de BD en una asignación para que use una conexión de BD nueva abra el cuadro de diálogo "Configuración del componente", haga clic en Cambiar y siga las instrucciones del asistente para conectarse a una base de datos nueva. Si solo necesita cambiar los objetos de BD que aparecen en la asignación haga clic con el botón derecho en la barra del título del componente de BD y seleccione Agregar, quitar o editar objetos de la base de datos en el menú contextual. Véase también Agregar, editar y quitar objetos de BD.

 

Tenga en cuenta que, por defecto, aunque cambie la base de datos, esto no reasigna todas las conexiones a o desde el componente de BD. Sin embargo, con la mayoría de tipos de BD se pueden conservar las conexiones de la asignación después de cambiar una base de datos. Para ello debe seguir algunos pasos previos, que describimos a continuación.

 

Cuando seleccione objetos de la base de datos como se describe en el apartado Agregar, editar y quitar objetos de BD, puede elegir si quiere que los nombres de los objetos de BD se consideren como relativos a un esquema predeterminado. En el contexto de las bases de datos, un esquema es una agrupación lógica de objetos de BD, generalmente por razones de seguridad, como la asignación de permisos. Los esquemas se comportan de forma distinta en función del tipo de base de datos.

 

En MapForce es importante tratar los nombres de los objetos de BD como relativos a un esquema si quiere cambiar la BD de la asignación más adelante (por ejemplo, a una BD de producción). También es útil si se cambia el nombre del esquema de BD en el servidor en algún momento y necesita actualizar la asignación en consecuencia. Si el esquema nuevo tiene la misma estructura que el que se usó en tiempo de ejecución, puede cambiar a este sin tener que cambiar manualmente todas las conexiones de la asignación. Esto solo es posible si configura los nombres de los objetos como relativos a un esquema predeterminado, como se describe más abajo.

 

Tenga en cuenta que:

 

se pueden usar nombres de objetos relativos a un esquema predeterminado en las bases de datos que son compatibles con los esquemas: IBM DB2, IBM Informix, IBM Db2 for i (iSeries), Oracle, PostgreSQL, Progress OpenEdge, SQL Server y Sybase.

esta característica existe en MapForce a partir de su versión 2020.

no se pueden usar nombres relativos si el componente de BD incluye relaciones locales o instrucciones SQL SELECT como tablas virtuales.

 

Para tratar los nombres de los objetos de BD como relativos al esquema predeterminado:

 

1.Haga clic con el botón derecho en el componente de BD de la asignación y seleccione Agregar, editar y quitar objetos de BD en el menú contextual.

2.Seleccione uno o más objetos que pertenezcan al esquema predeterminado o al catálogo y al esquema predeterminados (BD), según corresponda. La BD y el esquema predeterminados aparecen en negrita. En el ejemplo siguiente el catálogo predeterminado es Sandbox y el quema predeterminado es user. Esta estructura es específica para bases de datos de SQL Server y puede ser distinta en otros tipos de BD. Para más información sobre la estructura consulte Agregar, editar y quitar objetos de BD.

mf_db_switch_01

3.Marque la casilla Usar nombres de archivos relativos al esquema predeterminado. Tenga en cuenta que la casilla aparecerá deshabilitada si la base de datos no es compatible con nombres relativos de objetos.

 

Si los objetos que necesita la asignación están en un esquema distinto (no en el predeterminado) tiene varias alternativas:

 

conectarse como otro usuario de la BD que tenga acceso al esquema predeterminado que necesita.

volver a configurar el servidor de BD para cambiar el esquema predeterminado del usuario de BD que ya existe, siempre que tenga los privilegios necesarios.

 

Por ejemplo, en SQL Server un administrados podría cambiar el esquema predeterminado de un usuario de BD con una instrucción como la que sigue (que asume que el catálogo actual es "Sandbox" y que tanto el usuario como el esquema ya existen).

 

USE [Sandbox]
GO
ALTER USER [test_user] WITH DEFAULT_SCHEMA=[test_schema]
GO

 

Los objetos de BD que son relativos al esquema predeterminado aparecen en la asignación con un nombre relativo. Observe las diferencias entre estos dos componentes de BD:

mf_db_switch_02

En el componente de la izquierda se marcó la casilla Usar nombres de archivos relativos al esquema predeterminado, por lo que la tabla se muestra con un nombre relativo. En el componente de la derecha no se marcó esta casilla, por lo que el nombre de la tabla incluye el nombre del esquema.

 

Cuando los objetos de BD son referenciados de forma relativa se pueden cambiar la BD o el esquema de la asignación sin perder las conexiones:

 

abra el cuadro de diálogo "Configuración del componente" y haga clic en Cambiar. Siga las instrucciones del asistente para conectarse a una BD nueva como usuario nuevo. Si los objetos tienen un nombre relativo y la BD nueva la misma estructura, entonces todas las conexiones de la asignación se actualizarán automáticamente. En concreto, ahora coincidirán con el catálogo y el esquema predeterminados del usuario nuevo de BD.

si necesita realizar este cambio varias veces recomendamos que defina la conexión de BD como un recurso global, ya que este puede tener dos configuraciones: una predeterminada para la BD de desarrollo y una configuración de producción. Si asumimos que las dos bases de datos tienen la misma estructura, puede cambiar de una BD a otra cambiando de configuración en la lista desplegable:

mf_globalresource_08

 Para más información sobre este tema consulte Ejemplo: cambiar de base de datos.

 

Si hay objetos de la BD que aparecen en rojo después del cambio significa que no existen en el esquema de BD nuevo.

 

Generación de código

La casilla Usar nombres de archivos relativos al esquema predeterminado afecta al código de programa generado en C#, C++ o Java. Cuando se marca esta casilla todas las referencias de BD se convierten en relativas también en el código generado. El siguiente fragmento de código muestra una instrucción SQL (en C#) si no se marca la casilla. Observe que el nombre de la tabla incluye el nombre del esquema.

 

var3_NewStatement = (Altova.Db.Dbs.NewStatement(closure.var1_Connection_Instance, 1, "SELECT [id], [val], [user_data] FROM [user].[table]"));

 

El siguiente fragmento de código es un ejemplo de una instrucción SQL (en C#) si se marca la casilla:

 

var3_NewStatement = (Altova.Db.Dbs.NewStatement(closure.var1_Connection_Instance, 1, "SELECT [id], [val], [user_data] FROM [table]"));

 

Nota:existe un método residual de quitar los nombres de los esquemas del código generado, que es marcando la casilla Eliminar los nombres de esquema de los nombres de tabla del cuadro de diálogo "Configuración del componente". Este método solamente existe para garantizar la compatibilidad con archivos de versiones anteriores de la aplicación y no se recomienda en otros casos.

© 2017-2023 Altova GmbH