Compartilhar via


Função JetCompact

Aplica-se a: Windows | Windows Server

Função JetCompact

A função JetCompact faz uma cópia de um banco de dados existente. A cópia é compactada para um estado ideal para uso. Os dados nos dados copiados serão empacotados de acordo com as medidas escolhidas para os índices na criação de índice. Dessa forma, os dados compactados podem ser armazenados da forma mais densa possível. Como alternativa, os dados compactados podem reservar espaço para o crescimento de registro subsequente ou inserções de índice.

    JET_ERR JET_API JetCompact(
      __in          JET_SESID sesid,
      __in          JET_PCSTR szDatabaseSrc,
      __in          JET_PCSTR szDatabaseDest,
      __in          JET_PFNSTATUS pfnStatus,
      __in_opt      JET_CONVERT* pconvert,
      __in          JET_GRBIT grbit
    );

Parâmetros

sesid

A sessão a ser usada para essa chamada.

szDatabaseSrc

O banco de dados de origem que será compactado.

szDatabaseDest

O nome a ser usado para o banco de dados compactado.

pfnStatus

Uma função de retorno de chamada que pode ser chamada periodicamente por meio da operação compacta de banco de dados para relatar o progresso.

pconvert

Um ponteiro usado para designar uma DLL ESE alternativa que pode ser usada para ler o banco de dados de origem e fornecer parâmetros opcionais para uma operação JetCompact que está convertendo um banco de dados de um formato de versão anterior para posterior. Esse recurso foi descontinuado no Windows Server 2003.

grbit

Um grupo de bits que especifica zero ou mais das opções a seguir.

Valor

Significado

JET_bitCompactRepair

Usado quando o banco de dados de origem é conhecido por estar corrompido. Ele permite que um conjunto inteiro de novos comportamentos pretenda salvar o máximo de dados possível do banco de dados de origem. JetCompact com esse conjunto de opções pode retornar JET_errSuccess mas não copiar todos os dados criados no banco de dados de origem. Os dados que estavam em partes danificadas do banco de dados de origem serão ignorados.

JET_bitCompactStats

Faz com que o JetCompact despejo estatísticas no banco de dados de origem para um arquivo chamado DFRGINFO.TXT. As estatísticas incluem o nome de cada tabela no banco de dados de origem, o número de linhas em cada tabela, o tamanho total em bytes de todas as linhas em cada tabela, o tamanho total em bytes de todas as colunas do tipo JET_coltypLongText ou JET_coltypLongBinary grandes o suficiente para serem armazenados separados do registro, número de páginas folha de índice clusterizadas, e o número de páginas folha de valor longo. Além disso, estatísticas resumidas, incluindo o tamanho do banco de dados de origem, o banco de dados de destino, o tempo necessário para a compactação do banco de dados, o espaço temporário do banco de dados também são despejados.

Valor Retornado

Essa função retorna o tipo de dados JET_ERR com um dos seguintes códigos de retorno. Para obter mais informações sobre os possíveis erros do ESE, consulte Erros extensíveis do mecanismo de armazenamento e parâmetros de tratamento de erros.

Código de retorno

Descrição

JET_errSuccess

A operação foi concluída com sucesso.

JET_errClientRequestToStopJetService

Não é possível concluir a operação porque todas as atividades na instância associada à sessão cessaram como resultado de uma chamada para JetStopService.

JET_errFeatureNotAvailable

Um ponteiro pconvert não NULL foi fornecido, mas a versão do ESE que está sendo usada não dá suporte ao recurso de conversão. Esse recurso foi removido na versão do Windows Server 2003 do ESE.

JET_errInstanceUnavailable

Não é possível concluir a operação porque a instância associada à sessão encontrou um erro fatal que exige que o acesso a todos os dados seja revogado para proteger a integridade desses dados. Esse erro só será retornado pelo Windows XP e versões posteriores.

JET_errInTransaction

A sessão de chamada está dentro de uma transação. JetCompact deve ser chamado por uma sessão fora de qualquer transação.

JET_errNotInitialized

Não é possível concluir a operação porque a instância associada à sessão ainda não foi inicializada.

JET_errRestoreInProgress

Não é possível concluir a operação porque uma operação de restauração está em andamento na instância associada à sessão.

JET_errSessionSharingViolation

A mesma sessão não pode ser usada para mais de um thread ao mesmo tempo.

Esse erro só será retornado pelo Windows XP e versões posteriores.

JET_errTermInProgress

Não é possível concluir a operação porque a instância associada à sessão está sendo desligada.

Com êxito, o banco de dados de origem é copiado para o banco de dados de destino. O banco de dados de destino está em um estado ideal, por exemplo, todos os índices de tabela estão localizados no espaço de disco lógico adjacente. Cada página de índice é adicionada ao valor configurado quando os índices foram criados originalmente no banco de dados de origem. Todas as configurações de dados e metadados são copiadas com fidelidade total, a menos que a opção de reparo tenha sido especificada. Se a opção de reparo foi especificada, alguns dados do banco de dados de origem podem não ter sido copiados.

Em caso de falha, o banco de dados de destino pode existir, mas não é uma cópia completa do banco de dados de origem.

Comentários

A compactação de um banco de dados também é usada para atualizar um banco de dados de um formato de versão anterior para uma versão mais moderna. Um parâmetro opcional é pconvert, que contém uma estrutura que pode conter uma descrição de uma DLL de versão anterior a ser usada para ler o formato do banco de dados de origem. Esse recurso foi descontinuado no Windows Server 2003. Após o Windows Server 2003, as novas versões do ESE sempre podem ler versões mais antigas do formato de banco de dados e, portanto, esse recurso não é necessário.

A densidade desejada de dados após uma operação compacta é especificada quando tabelas e índices são criados. A densidade deve estar entre 20% e 100%. Se um banco de dados for lido principalmente e não for atualizado, os aplicativos definirão a densidade como 100% para reduzir o número de operações de E/S durante o processamento da consulta. No entanto, se os dados forem atualizados com frequência com operações que aumentam o tamanho dos dados armazenados junto com o registro ou novos dados forem inseridos com frequência, o aplicativo escolherá uma densidade menor para que as atualizações encontrem com mais frequência os recursos necessários disponíveis. A operação de compactação do banco de dados faz com que o banco de dados seja idealmente disposto de acordo com o preenchimento escolhido pelo aplicativo.

A compactação de banco de dados é uma operação off-line. Ele não pode ser executado enquanto o banco de dados está em uso. Como resultado, normalmente é feito como parte de um processo de build de desenvolvimento de um aplicativo que fornece um conjunto de dados como parte de si mesmo.

A compactação de banco de dados offline toca cada bit de dados em um banco de dados e pode ser usada como um meio de verificar a consistência de um banco de dados. Se um banco de dados for suspeito, ele poderá ser compactado. Se nenhum erro for encontrado na compactação, será sabido que o banco de dados está em um estado válido para o ESE.

Requisitos

Requisito Valor

Cliente

Requer Windows Vista, Windows XP ou Windows 2000 Professional.

Servidor

Requer o Windows Server 2008, o Windows Server 2003 ou o Windows 2000 Server.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Unicode

Implementado como JetCompactW (Unicode) e JetCompactA (ANSI).

Consulte Também

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService