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
ERROR_FUNCTION_FAILED
Konflik penggabungan baris dilaporkan.
ERROR_INVALID_HANDLE
Handel yang tidak valid atau tidak aktif disediakan.
ERROR_INVALID_TABLE
Tabel yang tidak valid disediakan.
ERROR_SUCCESS
Fungsi berhasil.
ERROR_DATATYPE_MISMATCH
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

Lihat juga

Format Definisi Kolom

Fungsi Manajemen Database