Partager via


MsiDatabaseGenerateTransformA, fonction (msiquery.h)

La fonction MsiDatabaseGenerateTransform génère un fichier de transformation des différences entre deux bases de données. Une transformation est un moyen d’enregistrer les modifications apportées à une base de données sans modifier la base de données d’origine. Vous pouvez également utiliser MsiDatabaseGenerateTransform pour tester si deux bases de données sont identiques sans créer de transformation.

Syntaxe

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

Paramètres

[in] hDatabase

Gérez la base de données obtenue à partir de MsiOpenDatabase qui inclut les modifications.

[in] hDatabaseReference

Gérez la base de données obtenue à partir de MsiOpenDatabase qui n’inclut pas les modifications.

[in] szTransformFile

Chaîne terminée par null qui spécifie le nom du fichier de transformation généré. Ce paramètre peut avoir la valeur Null. Si szTransformFile a la valeur null, vous pouvez utiliser MsiDatabaseGenerateTransform pour tester si deux bases de données sont identiques sans créer de transformation. Si les bases de données sont identiques, la fonction retourne ERROR_NO_DATA. Si les bases de données sont différentes, la fonction retourne NOERROR.

[in] iReserved1

Il s’agit d’un argument réservé qui doit être défini sur 0.

[in] iReserved2

Il s’agit d’un argument réservé qui doit être défini sur 0.

Valeur retournée

La fonction MsiDatabaseGenerateTransform retourne l’une des valeurs suivantes :

Remarques

Pour générer un fichier de différence entre deux bases de données, utilisez la fonction MsiDatabaseGenerateTransform . Une transformation contient des informations sur l’insertion et la suppression de colonnes et de lignes. Les indicateurs de validation sont stockés dans le flux d’informations récapitulatives du fichier de transformation.

Pour les tables qui existent dans les deux bases de données, la seule différence entre les deux schémas autorisés est l’ajout de colonnes à la fin de la table de référence. Vous ne pouvez pas ajouter de colonnes de clé primaire à une table ou modifier l’ordre ou les noms ou les définitions de colonne des colonnes existantes, comme défini dans la table de base. En d’autres termes, si aucune table ne contient de données et que les colonnes sont supprimées de la table de référence, la table résultante est identique à la table de base.

Étant donné que le délimiteur de liste pour les transformations, les sources et les correctifs est un point-virgule, ce caractère ne doit pas être utilisé pour les noms de fichiers ou les chemins d’accès.

Cette fonction ne génère pas de flux d’informations récapitulatives. Utilisez MsiCreateTransformSummaryInfo pour créer le flux d’une transformation existante.

Si szTransformFile a la valeur Null, vous pouvez tester si deux bases de données sont identiques sans créer de transformation. Si les bases de données sont identiques, ERROR_NO_DATA est retourné, NOERROR est retourné si des différences sont trouvées.

Cette fonction ne peut pas être appelée à partir d’actions personnalisées. Un appel à cette fonction à partir d’une action personnalisée entraîne l’échec de la fonction.

Si la fonction échoue, vous pouvez obtenir des informations d’erreur étendues à l’aide de MsiGetLastErrorRecord.

Notes

L’en-tête msiquery.h définit MsiDatabaseGenerateTransform comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP
Plateforme cible Windows
En-tête msiquery.h
Bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Fonctions de gestion de base de données

Transformations de base de données