Compartilhar via


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

Confira também

Funções de gerenciamento de banco de dados

Transformações de banco de dados