Função MsiDatabaseGenerateTransformA (msiquery.h)
A função MsiDatabaseGenerateTransform gera um arquivo de transformação de diferenças entre dois bancos de dados. Uma transformação é uma maneira de registrar alterações em um banco de dados sem alterar o banco de dados original. Você também pode usar MsiDatabaseGenerateTransform para testar se dois bancos de dados são idênticos sem criar uma transformação.
Sintaxe
UINT MsiDatabaseGenerateTransformA(
[in] MSIHANDLE hDatabase,
[in] MSIHANDLE hDatabaseReference,
[in] LPCSTR szTransformFile,
[in] int iReserved1,
[in] int iReserved2
);
Parâmetros
[in] hDatabase
Manipule para o banco de dados obtido de MsiOpenDatabase que inclui as alterações.
[in] hDatabaseReference
Identificador para o banco de dados obtido de MsiOpenDatabase que não inclui as alterações.
[in] szTransformFile
Uma cadeia de caracteres terminada em nulo que especifica o nome do arquivo de transformação que está sendo gerado. Este parâmetro pode ser nulo. Se szTransformFile for nulo, você poderá usar MsiDatabaseGenerateTransform para testar se dois bancos de dados são idênticos sem criar uma transformação. Se os bancos de dados forem idênticos, a função retornará ERROR_NO_DATA. Se os bancos de dados forem diferentes, a função retornará NOERROR.
[in] iReserved1
Esse é um argumento reservado e deve ser definido como 0.
[in] iReserved2
Esse é um argumento reservado e deve ser definido como 0.
Retornar valor
A função MsiDatabaseGenerateTransform retorna um dos seguintes valores:
Comentários
Para gerar um arquivo de diferença entre dois bancos de dados, use a função MsiDatabaseGenerateTransform . Uma transformação contém informações sobre inserção e exclusão de colunas e linhas. Os sinalizadores de validação são armazenados no fluxo de informações de resumo do arquivo de transformação.
Para tabelas que existem em ambos os bancos de dados, a única diferença entre os dois esquemas permitidos é a adição de colunas ao final da tabela de referência. Não é possível adicionar colunas de chave primária a uma tabela ou alterar a ordem ou nomes ou definições de coluna das colunas existentes, conforme definido na tabela base. Em outras palavras, se nenhuma tabela contiver dados e colunas forem removidas da tabela de referência, a tabela resultante será idêntica à tabela base.
Como o delimitador de lista para transformações, fontes e patches é um ponto e vírgula, esse caractere não deve ser usado para nomes de arquivo ou caminhos.
Essa função não gera um fluxo de Informações de Resumo. Use MsiCreateTransformSummaryInfo para criar o fluxo para uma transformação existente.
Se szTransformFile for nulo, você poderá testar se dois bancos de dados são idênticos sem criar uma transformação. Se os bancos de dados forem idênticos, ERROR_NO_DATA será retornado, NOERROR será retornado se forem encontradas diferenças.
Essa função não pode ser chamada de ações personalizadas. Uma chamada para essa função de uma ação personalizada faz com que a função falhe.
Se a função falhar, você poderá obter informações de erro estendidas usando MsiGetLastErrorRecord.
Observação
O cabeçalho msiquery.h define MsiDatabaseGenerateTransform como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Installer 5.0 no Windows Server 2012, no Windows 8, no Windows Server 2008 R2 ou no Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 no Windows Server 2008 ou no Windows Vista. Windows Installer no Windows Server 2003 ou no Windows XP |
Plataforma de Destino | Windows |
Cabeçalho | msiquery.h |
Biblioteca | Msi.lib |
DLL | Msi.dll |