MsiDatabaseMergeA 関数 (msiquery.h)
MsiDatabaseMerge 関数は、2 つのデータベースをマージし、重複する行を許可します。
構文
UINT MsiDatabaseMergeA(
[in] MSIHANDLE hDatabase,
[in] MSIHANDLE hDatabaseMerge,
[in] LPCSTR szTableName
);
パラメーター
[in] hDatabase
MsiOpenDatabaseから取得したデータベースへのハンドル。
[in] hDatabaseMerge
MsiOpenDatabase から取得したデータベースへのハンドル ベース データベースにマージ。
[in] szTableName
マージ競合情報を受け取るテーブルの名前。
戻り値
MsiDatabaseMerge 関数は、次のいずれかの値を返します。
リターン コード | 形容 |
---|---|
|
行のマージの競合が報告されました。 |
|
無効または非アクティブなハンドルが指定されました。 |
|
無効なテーブルが指定されました。 |
|
関数は成功しました。 |
|
2 つのデータベース間のスキーマの違い。 |
備考
MsiDatabaseMerge 関数と、Database オブジェクトの Merge メソッドを使用して、インストール パッケージに含まれるモジュールをマージすることはできません。 マージ モジュール を Windows インストーラー パッケージにマージするために使用しないでください。 インストール パッケージにマージ モジュールを含めるには、インストール パッケージの作成者は、「マージ モジュールの適用」 トピックで説明されているガイドラインに従う必要があります。
MsiDatabaseMerge 関数は、2 つのデータベースのデータをマージします。 これらのデータベースには同じコード ページが必要です。 データベース テーブルまたは行が競合した場合、MsiDatabaseMerge は失敗します。 最初のデータベースの任意の行のデータが、2 番目のデータベースの対応する行のデータと異なる場合、競合が発生します。 対応する行は両方のデータベースの同じテーブルにあり、両方のデータベースで同じ主キーを持ちます。 競合しないデータベースのテーブルには、同じ数の主キー、同じ数の列、同じ列の種類、同じ列名、同じ主キーを持つ行内の同じデータが必要です。 ただし、一時列は列数に関係なく、永続的な列が一致する限り競合が発生することなく、対応するテーブルに異なる数の一時列を含めることができます。
対応するテーブルの列の数、型、または名前が異なる場合、2 つのデータベースのスキーマに互換性がありません。インストーラーはテーブルの処理を停止し、マージは失敗します。 インストーラーは、行のマージの競合をチェックする前に、2 つのデータベースのスキーマが同じであることを確認します。 ERROR_DATATYPE_MISMATCHが返された場合、データベースが変更されていないことが保証されます。
特定の行のデータが異なる場合、これは行のマージの競合です。インストーラーはERROR_FUNCTION_FAILEDを返し、szTableNameという名前
コラム | 種類 | 鍵 | 許容 |
---|---|---|---|
テーブル | テキスト | Y | N |
NumRowMergeConflicts |
整数 の |
N |
この関数は、カスタム アクションから呼び出すことはできません。 カスタム アクションからこの関数を呼び出すと、関数は失敗します。
関数が失敗した場合は、MsiGetLastErrorRecordを使用して拡張エラー情報を取得できます。
手記
msiquery.h ヘッダーは、MSIDatabaseMerge をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | msiquery.h |
ライブラリ | Msi.lib |
DLL | Msi.dll |
関連項目
列定義形式 の