Share via


Função JetGetSecondaryIndexBookmark

Aplica-se a: Windows | Windows Server

Função JetGetSecondaryIndexBookmark

A função JetGetSecondaryIndexBookmark recupera um indicador especial para a entrada de índice secundário na posição atual de um cursor. Esse indicador pode ser usado para reposicionar com eficiência esse cursor de volta para a mesma entrada de índice usando JetGotoSecondaryIndexBookmark. Isso é mais útil ao reposicionar em um índice secundário que contém chaves duplicadas ou que contém várias entradas de índice para o mesmo registro.

Windows XP: JetGetSecondaryIndexBookmark é introduzido no Windows XP.

    JET_ERR JET_API JetGetSecondaryIndexBookmark(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out_opt     void* pvSecondaryKey,
      __in          unsigned long cbSecondaryKeyMax,
      __out_opt     unsigned long* pcbSecondaryKeyActual,
      __out_opt      void* pvPrimaryBookmark,
      __in          unsigned long cbPrimaryBookmarkMax,
      __out_opt     unsigned long* pcbPrimaryKeyActual,
      __in          const JET_GRBIT grbit
    );

Parâmetros

sesid

A sessão a ser usada para essa chamada.

Tableid

O cursor a ser usado para essa chamada.

pvSecondaryKey

O buffer de saída que recebe a chave secundária.

cbSecondaryKeyMax

O tamanho máximo, em bytes, do buffer de saída para a chave secundária.

pcbSecondaryKeyActual

Recebe o tamanho real em bytes da chave secundária.

Se esse parâmetro for NULL, o tamanho real da chave secundária não será retornado.

Se o buffer de saída for muito pequeno, o tamanho real da chave secundária ainda será retornado. Isso significa que esse número será maior que o tamanho do buffer de saída.

pvPrimaryBookmark

O buffer de saída que recebe o indicador de chave primária.

cbPrimaryBookmarkMax

O tamanho máximo, em bytes, do buffer de saída para o indicador de chave primária.

pcbPrimaryKeyActual

Recebe o tamanho real, em bytes, do indicador de chave primária.

Se esse parâmetro for NULL, o tamanho real do indicador de chave primária não será retornado.

Se o buffer de saída for muito pequeno, o tamanho real do indicador de chave primária ainda será retornado. Isso significa que esse número será maior que o tamanho do buffer de saída.

grbit

Reservado para uso futuro.

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_errBufferTooSmall

A operação foi concluída com êxito, mas um dos buffers de saída era muito pequeno para receber os dados solicitados.

O buffer de saída foi preenchido com o máximo de indicador que caberia. O tamanho real do indicador também foi retornado, se solicitado.

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_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_errNoCurrentIndex

O cursor não está atualmente em um índice secundário.

Não é significativo recuperar um indicador de índice secundário quando o cursor não está usando um índice secundário no momento. JetGetBookmark deve ser usado quando o cursor não está em um índice secundário.

JET_errNoCurrentRecord

O cursor não está posicionado em um registro.

Isso pode ocorrer por vários motivos diferentes. Por exemplo, isso acontecerá se o cursor estiver posicionado no momento após o último registro no índice atual.

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 indicador de índice secundário para a entrada de índice na posição atual de um cursor será retornado nos buffers de saída. Nenhuma alteração no estado do banco de dados ocorrerá.

Em caso de falha, o estado dos buffers de saída e o tamanho real do indicador de índice secundário serão indefinidos, a menos que JET_errBufferTooSmall tenha sido retornado. Caso JET_errBufferTooSmall seja retornado, os buffers de saída conterão o máximo do indicador de índice secundário que caberá no espaço fornecido e o tamanho real do indicador de índice secundário será preciso. De qualquer forma, nenhuma alteração no estado do banco de dados ocorrerá.

Comentários

Os indicadores geralmente devem ser tratados como partes opacas de dados. Nenhuma tentativa deve ser feita para explorar a estrutura interna desses dados. No entanto, as seguintes propriedades podem ser conhecidas sobre todos os indicadores ESENT:

  • Um indicador identifica exclusivamente um registro em uma determinada tabela.

  • O indicador de um registro não será alterado durante o tempo de vida desse registro.

  • O indicador de um registro é o mesmo que a chave desse registro no índice primário sobre a tabela que contém esse registro. Se nenhum índice primário for definido sobre essa tabela, o mecanismo de banco de dados criará seu próprio indicador para o registro.

  • Os indicadores podem ser comparados uns com os outros usando memcmp para estabelecer sua ordenação relativa no índice primário sobre a tabela dos registros de origem. Se nenhum índice primário for definido sobre essa tabela, a ordenação relativa de indicadores dessa tabela não será significativa.

  • Não faz sentido comparar indicadores de registros de tabelas diferentes entre si.

  • Um indicador é sempre menor ou igual a JET_cbBookmarkMost (256) bytes de comprimento antes do Windows Vista. No Windows Vista e versões posteriores, os indicadores podem ser maiores. O tamanho máximo de um indicador é igual ao valor atual de JET_paramKeyMost + 1.

As chaves geralmente devem ser tratadas como partes opacas de dados. Nenhuma tentativa deve ser feita para explorar a estrutura interna desses dados. No entanto, as seguintes propriedades podem ser conhecidas sobre todas as chaves ESENT:

  • As chaves podem ser comparadas entre si usando memcmp para estabelecer sua ordenação relativa no índice de origem sobre a tabela das entradas de índice de origem.

  • Não faz sentido comparar chaves de entradas de índice de índices diferentes uns com os outros.

  • Uma chave é sempre menor ou igual a JET_cbKeyMost (255) bytes de comprimento antes do Windows Vista. No Windows Vista e versões posteriores, as chaves podem ser maiores. O tamanho máximo de uma chave é igual ao valor atual de JET_paramKeyMost.

Requisitos

Requisito Valor

Cliente

Requer o Windows Vista ou o Windows XP.

Servidor

Requer o Windows Server 2008 ou o Windows Server 2003.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Consulte Também

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetGetBookmark
JetGotoSecondaryIndexBookmark
JetRetrieveKey
memcmp