このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2021 Enterprise Edition

新規のデータベース接続を使用するようにマッピング上のデータベースコンポーネントを変更するには、 データベースコンポーネント設定 を開き、「変更」 をクリックし、新規のデータベースへ接続するためにウィザーとのステップに従います。データベースオブジェクトのみを変更する場合、データベースコンポーネントのタイトルバーを右クリックして、 「データベースオブジェクトの追加/編集/削除」 をコンテキストメニューから選択します。データベースオブジェクトの追加、編集、および削除も参照してください。

デフォルトではデータベースの変更はすべての既存のマッピング接続をデータベース接続に、または、データベース接続から再マップしないことに注意してください。 このトピック内で説明される準備ステップに従うとデータベースの型の多数はデータベースの変更後にマッピング接続を保持することができます。

 

データベースオブジェクトの追加、編集、および削除 内で説明されている通りデータベースオブジェクトを選択すると、任意でデータベースオブジェクト名がデフォルトのスキーマに対して相対的に考慮されるかを選択することができます。データベースのコンテキストでは、「スキーマ」は通常パーミッションの割り当てなどセキュリティの目的のためのデータベースオブジェクトのロジカルなグループ分類です。スキーマはデータベースの型により若干異なる振る舞いを取ります。

 

MapForce 内では、マッピングを異なるデータベースに後に変更する予定がある場合データベースオブジェクト名をスキーマに対して相対的に扱うことは需要です (例えば、生産データベースに変更する場合など)。これはサーバー上でデータベーススキーマに名前が付けられており、マッピングを必要に応じて更新する場合に役に立ちます。スキーマがマッピングデザイン時に使用されたものと同じ構造を持つ場合、 マッピング接続を手動で変更することなく切り替えることができます。上記のとおりオブジェクト名がデフォルトのスキーマに対して相対的になっている場合のみこれは可能です。

 

以下の点に注意してください:

 

デフォルトのスキーマに対して相対的なオブジェクト名の使用はスキーマをサポートするデータベース型のために使用することができます: IBM DB2、IBM Informix, IBM Db2 for i (iSeries)、 Oracle、 PostgreSQL、Progress OpenEdge、SQL Server と Sybase。

この機能は MapForce バージョン 2020 からサポートされています。

ローカルリレーションシップ または 仮想テーブルとしての SELECT ステートメント.がデータベースコンポーネントに含まれる場合相対的な名前を使用することはできません。

 

データベースオブジェクト名をデフォルトのスキーマに対して相対的に扱う方法:

 

1.マッピング上のデータベースコンポーネントのタイトルバーを右クリックし、「データベースオブジェクトの追加/削除/編集」をコンテキストメニューから選択します。

2.デフォルトのスキーマに属する1つまたは複数のオブジェクト、または デフォルトのカタログ (データベース) とスキーマを選択します。デフォルトのデータベースとスキーマは太字で表示されています。下のサンプルでは、デフォルトのカタログは Sandbox」 で、デフォルトのスキーマは user」 です。 この構造は SQL Server データベースに固有で、他のデータベース型とは異なる可能性があります。表示される構造に関しての詳細は、データベースオブジェクトの追加、編集、および削除を参照してください。

mf_db_switch_01

3.「デフォルトのスキーマに対して相対的なオブジェクト名を使用する」 チェックボックスを選択します。データベースが相対的なオブジェクト名をサポートしない場合チェックボックスは灰色で表示されることに注意してください。

 

マッピング上で必要なオブジェクトが(デフォルトではなく) 異なるスキーマ 内に存在する場合以下の代替が存在します:

 

必要とされるデフォルトのスキーマへのアクセスを持つ他のデータベースユーザーとして接続します。

必要とされる特権を有することが前提で既存のデータベースユーザーのデフォルトのスキーマを変更するためにデータベースサーバーを再構成します。

 

SQL Server を例として、データベースの管理者は(現在のカタログが「サンドボックス」でユーザーとスキーマが既存であることを想定して)以下に示されるステートメントに類似したステートメントを使用してデータベースユーザーのデフォルトのスキーマを変更することができます。

 

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

 

デフォルトのスキーマに相対的なデータベースオブジェクトはマッピング上で相対的な名前と共に表示されています。次の2つのデータベースコンポーネント間の差分を考慮してください:

mf_db_switch_02

左側のコンポーネントでは、「デフォルトのスキーマに相対的なオブジェクト名を使用する」 チェックボックスが選択されており、このためにテーブルは相対的な名前と共に表示されています。右側のコンポーネントでは、チェックボックスは選択されておらず、テーブルにはスキーマ名が含まれています。

 

データベースオブジェクトが相対的な方法で参照されている場合、マッピング接続を失うことなしに マッピングを新規のデータベースまたはスキーマに以下のように変更することができます:

 

データベースコンポーネント設定 を開き、「変更」をクリックします。 ウィザーとステップに従い、新規のデータベースに新しいユーザーとして接続します。オブジェクトを相対的な名前で修飾した場合、新規のデータベースは同じ構造を持ちます。そして、マッピング上のすべての接続は自動的に更新されます。具体的には、新規のデータベースユーザーのデフォルトカタログとスキーマにマッチします。

切り替えを再帰的なベースで行う必要がある場合、データベース接続をグローバルリソース として定義することが奨励されます。例えば、グローバルリソースは2つの構成を持つことができます:開発データベースのためのデフォルトの構成と生産のための構成を持つことができます。両方のデータベースが同じ構成を持つことを前提とし、ドロップダウンリストから必要とされる構成を変更してデータベース間を切り替えることができます:

mf_globalresource_08

このシナリオの詳細に関しては例: データベースの切り替えを参照してください。

 

データベースオブジェクトが切り替え後赤い色で表示されます。これは新規のデータベーススキーマではこれらのデータベースオブジェクトが存在しないことを指します。

 

コード生成

「デフォルトのスキーマに対して相対的にオブジェクト名を使用する」 チェックボックスは生成された C#、C++、または Java プログラムコードに影響を与えます。このチェックボックスが選択されていると、全てのデータベースレファレンスが生成されたコード内で相対的になります。次のサンプルはチェックボックスが選択されていない生成された ( C#)  SQL ステートメントのサンプルです。テーブル名にスキーマ名が含まれていることに注意してください。

 

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

 

次はチェックボックスが選択された生成された SQL ステートメント (C#) のサンプルです:

 

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

 

メモ:スキーマ名を削除するためにレガシーな方法が存在します。「テーブル名からスキーマ名を削除する」 チェックボックスを データベースコンポーネント設定をから選択します。 レガシーなアプローチは下位互換性のみのためにサポートされますが、回避されるべきです。

(C) 2020 Altova GmbH