共用方式為


MsiDatabaseGenerateTransformA 函式 (msiquery.h)

MsiDatabaseGenerateTransform 函式會產生兩個資料庫之間差異的轉換檔案。 轉換是記錄資料庫變更而不改變原始資料庫的方式。 您也可以使用 MsiDatabaseGenerateTransform 來測試兩個資料庫是否相同,而不需建立轉換。

語法

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

參數

[in] hDatabase

MsiOpenDatabase 取得的資料庫句柄, 包含變更。

[in] hDatabaseReference

MsiOpenDatabase 取得的資料庫句柄, 不包含變更。

[in] szTransformFile

以 Null 結尾的字串,指定要產生之轉換檔的名稱。 此參數可以是 Null。 如果 szTransformFile 為 null,您可以使用 MsiDatabaseGenerateTransform 來測試兩個資料庫是否完全相同,而不需建立轉換。 如果資料庫相同,函式會傳回ERROR_NO_DATA。 如果資料庫不同,則函式會傳回 NOERROR。

[in] iReserved1

這是保留的自變數,必須設定為0。

[in] iReserved2

這是保留的自變數,必須設定為0。

傳回值

MsiDatabaseGenerateTransform 函式會傳回下列其中一個值:

言論

若要在兩個資料庫之間產生差異檔案,請使用 MsiDatabaseGenerateTransform 函式。 轉換包含插入和刪除數據列和數據列的相關信息。 驗證旗標會儲存在轉換檔案的摘要資訊數據流中。

對於存在於這兩個資料庫中的數據表,允許的兩個架構之間唯一的差異是將數據行加入參考數據表的結尾。 您無法將主鍵數據行加入資料表,或變更基表中所定義之現有數據行的順序或名稱或資料行定義。 換句話說,如果兩個數據表都沒有從參考數據表中移除數據和數據行,產生的數據表會與基表相同。

因為轉換的清單分隔符、來源和修補程式是分號,因此不應該將此字元用於檔名或路徑。

此函式不會產生摘要信息數據流。 使用 MsiCreateTransformSummaryInfo 建立現有轉換的數據流。

如果 szTransformFile 為 null,您可以測試兩個資料庫是否完全相同,而不需要建立轉換。 如果資料庫相同,則會傳回ERROR_NO_DATA,如果找到差異,則會傳回 NOERROR。

無法從自定義動作呼叫此函式。 從自定義動作呼叫此函式會導致函式失敗。

如果函式失敗,您可以使用 MsiGetLastErrorRecord取得擴充錯誤資訊。

注意

msiquery.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiDatabaseGenerateTransform 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer
目標平臺 窗戶
標頭 msiquery.h
連結庫 Msi.lib
DLL Msi.dll

另請參閱

Database Management Functions

資料庫轉換