Partager via


MsiDatabaseGenerateTransformW, fonction (msiquery.h)

La fonction MsiDatabaseGenerateTransform génère un fichier de transformation de 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 MsiDatabaseGenerateTransformW(
  [in] MSIHANDLE hDatabase,
  [in] MSIHANDLE hDatabaseReference,
  [in] LPCWSTR   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 en cours de génération. Ce paramètre peut être null. Si szTransformFile est 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é et doit être défini sur 0.

[in] iReserved2

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

Valeur de retour

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écapitulative 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 clés primaires à une table ou modifier l’ordre ou les noms ou définitions de colonnes des colonnes existantes telles que définies dans la table de base. En d’autres termes, si aucune table ne contient de données et de 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ée, 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 provoque l’échec de la fonction.

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

Note

L’en-tête msiquery.h définit MsiDatabaseGenerateTransform comme 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.

Exigences

Exigence Valeur
client minimum 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
d’en-tête msiquery.h
bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

fonctions de gestion des bases de données

transformations de base de données