Fungsi MsiDatabaseGenerateTransformA (msiquery.h)

Fungsi MsiDatabaseGenerateTransform menghasilkan file transformasi perbedaan antara dua database. Transformasi adalah cara merekam perubahan pada database tanpa mengubah database asli. Anda juga dapat menggunakan MsiDatabaseGenerateTransform untuk menguji apakah dua database identik tanpa membuat transformasi.

Sintaks

UINT MsiDatabaseGenerateTransformA(
  [in] MSIHANDLE hDatabase,
  [in] MSIHANDLE hDatabaseReference,
  [in] LPCSTR    szTransformFile,
  [in] int       iReserved1,
  [in] int       iReserved2
);

Parameter

[in] hDatabase

Tangani ke database yang diperoleh dari MsiOpenDatabase yang menyertakan perubahan.

[in] hDatabaseReference

Tangani ke database yang diperoleh dari MsiOpenDatabase yang tidak menyertakan perubahan.

[in] szTransformFile

String yang dihentikan null yang menentukan nama file transformasi yang dihasilkan. Parameter ini dapat berupa null. Jika szTransformFile null, Anda dapat menggunakan MsiDatabaseGenerateTransform untuk menguji apakah dua database identik tanpa membuat transformasi. Jika database identik, fungsi akan mengembalikan ERROR_NO_DATA. Jika database berbeda, fungsi mengembalikan NOERROR.

[in] iReserved1

Ini adalah argumen yang dicadangkan dan harus diatur ke 0.

[in] iReserved2

Ini adalah argumen yang dicadangkan dan harus diatur ke 0.

Mengembalikan nilai

Fungsi MsiDatabaseGenerateTransform mengembalikan salah satu nilai berikut:

Keterangan

Untuk menghasilkan file perbedaan antara dua database, gunakan fungsi MsiDatabaseGenerateTransform . Transformasi berisi informasi mengenai penyisipan dan penghapusan kolom dan baris. Bendera validasi disimpan dalam aliran informasi ringkasan file transformasi.

Untuk tabel yang ada di kedua database, satu-satunya perbedaan antara dua skema yang diizinkan adalah penambahan kolom ke akhir tabel referensi. Anda tidak dapat menambahkan kolom kunci primer ke tabel atau mengubah urutan atau nama atau definisi kolom dari kolom yang ada seperti yang ditentukan dalam tabel dasar. Dengan kata lain, jika tidak ada tabel yang berisi data dan kolom yang dihapus dari tabel referensi, tabel yang dihasilkan identik dengan tabel dasar.

Karena pemisah daftar untuk transformasi, sumber, dan patch adalah titik koma, karakter ini tidak boleh digunakan untuk nama file atau jalur.

Fungsi ini tidak menghasilkan aliran Informasi Ringkasan. Gunakan MsiCreateTransformSummaryInfo untuk membuat aliran untuk transformasi yang ada.

Jika szTransformFile null, Anda dapat menguji apakah dua database identik tanpa membuat transformasi. Jika database identik, ERROR_NO_DATA dikembalikan, NOERROR dikembalikan jika perbedaan ditemukan.

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 MsiDatabaseGenerateTransform 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

Fungsi Manajemen Database

Transformasi Database