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 do aplicativo de arquivos de banco de dados. O mecanismo já deve estar configurado corretamente para inicialização usando JetSetSystemParameter. A recuperação de falhas no 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 esta chamada.

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

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 poderá ser nulo ou poderá 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 nulo ou JET_instanceNil. Esse identificador de instância pode então ser passado para qualquer outra função que use uma instância do. 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 que possa ser usada por algo diferente de 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 dado. 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 é 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 reservadas (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 for definido como "off", o arquivo de ponto de verificação e os arquivos de log não serão criados. Se JET_paramMaxTemporaryTables for definido como zero, o arquivo de banco de dados temporário não será criado. Esses arquivos representam a superfície do disco de uma instância e devem ser gerenciados com cuidado. Se esses arquivos forem corrompidos individualmente ou em relação um ao outro, os dados armazenados nos bancos de dados associados à instância poderão ser perdidos.

Quando o mecanismo de banco de dados é inicializado com um conjunto existente de arquivos de log de transações, esses arquivos serão inspecionados para ver se a versã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 versão anterior do mecanismo e salvará as alterações de volta nos arquivos de banco de dados. O resultado será os bancos de dados que são consistentes com a transação. É possível que esse processo demore um pouco de tempo se o número de arquivos de log de transações a serem reproduzidos em relação aos bancos de dados for grande.

Devido ao fato de que o JetInit executa a recuperação de pane, é possível que quase todos os erros do mecanismo de banco de dados sejam retornados 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 ingestão de arquivos. Os dados corrompidos serão manifestados 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. O ingerenciamento de arquivos será manifestado 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 os quais 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 impedidos pelo aplicativo. O aplicativo deve ter cuidado para proteger o repositório desses arquivos contra a manipulação por forças externas, como o usuário ou outros aplicativos. Se o aplicativo desejar destruir uma instância inteiramente, 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 os arquivos de banco de dados anexados à instância.

A função JetInit se comporta de forma diferente, com 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 depois que o JetInit é concluído com êxito. Não é necessário chamar JetAttachDatabase após JetInit para garantir o acesso ao banco de dados posteriormente. Se a função JetAttachDatabase for chamada após a função JetInit , o aviso de 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 automaticamente desanexados da instância pelo JetInit. Isso significa que JetAttachDatabase sempre deve ser chamado depois de JetInit nesse caso.

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

Requisitos

Cliente

Requer o Windows Vista, o Windows XP ou o 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 do mecanismo de armazenamento extensível
JET_ERR
JET_GRBIT
JET_INSTANCE
JET_paramMaxTemporaryTables
JET_paramRecovery
JetAttachDatabase
JetCreateInstance
JetInit3
JetSetSystemParameter