Função JetInit

Aplica-se a: Windows | Windows Server

Função JetInit

A função JetInit coloca o mecanismo de banco de dados em um estado em que ele pode dar suporte ao uso de aplicativos de arquivos de banco de dados. O mecanismo já deve estar configurado corretamente para inicialização usando JetSetSystemParameter. A recuperação de falha do banco de dados é executada automaticamente como parte do processo de inicialização.

JET_ERR JET_API JetInit(
  __in_out_opt  JET_INSTANCE* pinstance
);

Parâmetros

pinstance

A instância a ser usada para essa chamada.

Para o Windows 2000, esse parâmetro é ignorado e sempre deve ser NULL.

Para o Windows XP e versões posteriores, o uso desse parâmetro depende do modo de operação do mecanismo. Se o mecanismo estiver operando no modo herdado (modo de compatibilidade do Windows 2000) em que apenas uma instância tem suporte, esse parâmetro pode ser NULL ou pode ser definido como um buffer de saída válido que retornará o identificador de instância global criado como um efeito colateral da inicialização. Esse buffer de saída deve ser definido como NULL ou JET_instanceNil. Esse identificador de instância pode ser passado para qualquer outra função que use uma instância. Se o mecanismo estiver operando no modo de várias instâncias, esse parâmetro deverá ser definido como um buffer de entrada válido que contenha o identificador de instância retornado pela instância de função JetCreateInstance que está sendo inicializada.

Comentários

Uma instância deve ser inicializada com uma chamada para JetInit antes de poder ser usada por qualquer outra coisa que não seja JetSetSystemParameter.

Uma instância é destruída por uma chamada para a função JetTerm , mesmo que essa instância nunca tenha sido inicializada usando JetInit. Uma instância é a unidade de capacidade de recuperação para o mecanismo de banco de dados. Ele controla o ciclo de vida de todos os arquivos usados para proteger a integridade dos dados em um conjunto de arquivos de banco de dados. Esses arquivos incluem o arquivo de ponto de verificação e os arquivos de log de transações.

O número máximo de instâncias que podem ser criadas a qualquer momento é controlado por JET_paramMaxInstances, que pode ser configurado por uma chamada para JetSetSystemParameter. Quando o mecanismo de banco de dados for inicializado pela primeira vez, o JetInit criará um conjunto inicial de arquivos para dar suporte a essa instância. Esses arquivos incluem um arquivo de ponto de verificação (chamado <JET_paramBaseName>. CHK), um conjunto de arquivos de log de transações reservados (chamado RES1. LOG e RES2. LOG), um arquivo de log de transações inicial (chamado <JET_paramBaseName>. LOG) e um arquivo de banco de dados temporário (nomeado de acordo com JET_paramTempPath). Se JET_paramRecovery estiver definido como "Desativado", o arquivo de ponto de verificação e os arquivos de log não serão criados. Se JET_paramMaxTemporaryTables estiver definido como zero, o arquivo de banco de dados temporário não será criado. Esses arquivos representam o volume em disco de uma instância e devem ser gerenciados com cuidado. Se esses arquivos estiverem corrompidos individualmente ou em relação uns aos outros, os dados armazenados nos bancos de dados associados à instância poderão ser perdidos.

Quando o mecanismo de banco de dados for inicializado com um conjunto existente de arquivos de log de transações, esses arquivos serão inspecionados para ver se a encarnação anterior da instância sofreu uma falha. Se uma falha for detectada, a recuperação de falha será executada automaticamente. Esse processo reconstruirá os bancos de dados anexados à instância durante a encarnação anterior do mecanismo e salvará as alterações nos arquivos de banco de dados. O resultado serão bancos de dados consistentes com transações. É possível que esse processo leve algum tempo se o número de arquivos de log de transações a serem reproduzidos nos bancos de dados for grande.

Devido ao fato de que o JetInit executa a recuperação de falha, é possível que quase qualquer erro do mecanismo de banco de dados seja retornado em caso de falha. Na prática, a maioria dos erros vistos na implantação se enquadra em duas categorias: corrupção de dados e má gestão de arquivos. Os dados corrompidos se manifestarão com mais frequência nos seguintes erros ou semelhantes:

  • JET_errReadVerifyFailure

  • JET_errLogFileCorrupt

  • JET_errCheckpointCorrupt

Esses erros são quase sempre causados por problemas de hardware e, portanto, não podem ser evitados. A má gestão de arquivos se manifestará com mais frequência nos seguintes erros ou semelhantes:

  • JET_errMissingLogFile

  • JET_errAttachedDatabaseMismatch

  • JET_errDatabaseSharingViolation

  • JET_errInvalidLogSequence

Se a recuperação estiver em execução em um conjunto de logs, para o qual nem todos os bancos de dados estão presentes (o que retornará o erro JET_errAttachedDatabaseMismatch em circunstâncias normais) e o cliente desejar que a recuperação continue apesar dos bancos de dados ausentes, o JET_ bitReplayIgnoreMissingDB poderá ser usado para continuar a recuperação para os bancos de dados disponíveis. Esses erros são evitáveis pelo aplicativo. O aplicativo deve ter cuidado para proteger o repositório desses arquivos contra manipulação por forças externas, como o usuário ou outros aplicativos. Se o aplicativo quiser destruir totalmente uma instância, todos os arquivos associados à instância deverão ser excluídos. Isso inclui o arquivo de ponto de verificação, os arquivos de log de transações e todos os arquivos de banco de dados anexados à instância.

A função JetInit se comporta de forma diferente, em relação aos arquivos de banco de dados anexados à instância, entre o Windows 2000 e versões posteriores.

Windows 2000: No Windows 2000, qualquer banco de dados anexado à instância durante uma encarnação anterior dessa instância permanece anexado à instância após a conclusão bem-sucedida do JetInit . Não é necessário chamar JetAttachDatabase após JetInit para garantir o acesso posterior ao banco de dados. Se a função JetAttachDatabase for chamada após a função JetInit , o aviso JET_wrnDatabaseAttached será retornado. Esse aviso indica que o anexo do banco de dados foi preservado e pode ser ignorado.

Windows XP: No Windows XP e versões posteriores, todos os bancos de dados são desanexados automaticamente da instância pelo JetInit. Isso significa que JetAttachDatabase sempre deve ser chamado após JetInit nesse caso.

Qualquer aplicativo gravado para ser executado no Windows 2000 e em versões posteriores sempre deve chamar JetAttachDatabase após JetInit. Se o aplicativo for executado no Windows 2000, ele deverá esperar ver JET_wrnDatabaseAttached em alguns casos. Confira JetAttachDatabase para obter mais informações.

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.

Consulte Também

Arquivos extensíveis do mecanismo de armazenamento
JET_ERR
JET_GRBIT
JET_INSTANCE
JET_paramMaxTemporaryTables
JET_paramRecovery
JetAttachDatabase
JetCreateInstance
JetInit3
JetSetSystemParameter