Fungsi MsiDatabaseMergeA (msiquery.h)
Fungsi MsiDatabaseMerge menggabungkan dua database bersama-sama, yang memungkinkan baris duplikat.
Sintaks
UINT MsiDatabaseMergeA(
[in] MSIHANDLE hDatabase,
[in] MSIHANDLE hDatabaseMerge,
[in] LPCSTR szTableName
);
Parameter
[in] hDatabase
Handel ke database yang diperoleh dari MsiOpenDatabase.
[in] hDatabaseMerge
Handel ke database yang diperoleh dari MsiOpenDatabase untuk digabungkan ke database dasar.
[in] szTableName
Nama tabel untuk menerima informasi konflik penggabungan.
Nilai kembali
Fungsi MsiDatabaseMerge mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Konflik penggabungan baris dilaporkan. |
|
Handel yang tidak valid atau tidak aktif disediakan. |
|
Tabel yang tidak valid disediakan. |
|
Fungsi berhasil. |
|
Perbedaan skema antara dua database. |
Keterangan
Fungsi MsiDatabaseMerge dan metode Penggabungan objek Database tidak dapat digunakan untuk menggabungkan modul yang disertakan dalam paket penginstalan. Mereka tidak boleh digunakan untuk menggabungkan Modul Penggabungan ke dalam paket Pemasang Windows. Untuk menyertakan modul penggabungan dalam paket penginstalan, penulis paket penginstalan harus mengikuti panduan yang dijelaskan dalam topik Menerapkan Modul Penggabungan .
MsiDatabaseMerge tidak menyalin file Kabinet yang disematkan atau transformasi yang disematkan dari database referensi ke dalam database target. Aliran data yang disematkan yang tercantum dalam Tabel Biner atau Tabel Ikon disalin dari database referensi ke database target. Penyimpanan yang disematkan dalam database referensi tidak disalin ke database target.
Fungsi MsiDatabaseMerge menggabungkan data dari dua database. Database ini harus memiliki halaman kode yang sama. MsiDatabaseMerge gagal jika ada tabel atau baris dalam konflik database. Konflik terjadi jika data di baris mana pun dalam database pertama berbeda dari data di baris yang sesuai dari database kedua. Baris yang sesuai berada dalam tabel yang sama dari kedua database dan memiliki kunci primer yang sama di kedua database. Tabel database yang tidak bertentangan harus memiliki jumlah kunci primer yang sama, jumlah kolom yang sama, jenis kolom yang sama, nama kolom yang sama, dan data yang sama dalam baris dengan kunci primer yang identik. Namun, kolom sementara tidak masalah dalam jumlah kolom dan tabel terkait dapat memiliki jumlah kolom sementara yang berbeda tanpa membuat konflik selama kolom persisten cocok.
Jika jumlah, jenis, atau nama kolom dalam tabel terkait berbeda, skema kedua database tidak kompatibel dan alat penginstal berhenti memproses tabel dan penggabungan gagal. Alat penginstal memeriksa bahwa kedua database memiliki skema yang sama sebelum memeriksa konflik penggabungan baris. Jika ERROR_DATATYPE_MISMATCH dikembalikan, Anda dijamin bahwa database belum diubah.
Jika data dalam baris tertentu berbeda, ini adalah konflik penggabungan baris, penginstal mengembalikan ERROR_FUNCTION_FAILED dan membuat tabel baru bernama szTableName. Kolom pertama tabel ini adalah nama tabel yang mengalami konflik. Kolom kedua memberikan jumlah baris dalam tabel yang mengalami konflik. Tabel yang melaporkan konflik muncul sebagai berikut.
Kolom | Jenis | Kunci | Dapat diubah ke null |
---|---|---|---|
Tabel | Teks | Y | N |
NumRowMergeConflicts | Bilangan bulat | N |
Fungsi ini tidak dapat dipanggil dari tindakan kustom. Panggilan ke fungsi ini dari tindakan kustom menyebabkan fungsi gagal.
Jika fungsi gagal, Anda dapat memperoleh informasi kesalahan yang diperluas dengan menggunakan MsiGetLastErrorRecord.
Catatan
Header msiquery.h mendefinisikan MsiDatabaseMerge sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Windows Installer pada Windows Server 2003 atau Windows XP |
Target Platform | Windows |
Header | msiquery.h |
Pustaka | Msi.lib |
DLL | Msi.dll |