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

Manipule para o banco de dados obtido de MsiOpenDatabase que não inclua 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. Esse 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.

Valor de retorno

A função msiDatabaseGenerateTransform retorna um dos seguintes valores:

Observações

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. Você não pode 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 das tabelas 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.

Nota

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 do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows Installer 5.0 no Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 no Windows Server 2008 ou Windows Vista. Windows Installer no Windows Server 2003 ou Windows XP
da Plataforma de Destino Windows
cabeçalho msiquery.h
biblioteca Msi.lib
de DLL Msi.dll

Consulte também

Funções de gerenciamento de banco de dados

transformações de banco de dados