Compartilhar via


Função JetDupCursor

Aplica-se a: Windows | Windows Server

Função JetDupCursor

A função JetDupCursor duplica um cursor aberto e retorna um identificador para o cursor duplicado. Se o cursor duplicado for um cursor somente leitura, o cursor duplicado também será um cursor somente leitura. Qualquer estado relacionado à construção de uma chave de pesquisa ou à atualização de um registro não é copiado para o cursor duplicado. Além disso, o local do cursor original não é duplicado no cursor duplicado. O cursor duplicado sempre é aberto no índice clusterizado e sua localização está sempre na primeira linha da tabela.

    JET_ERR JET_API JetDupCursor(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         JET_TABLEID* ptableid,
      __in          JET_GRBIT grbit
    );

Parâmetros

sesid

A sessão a ser usada para essa chamada.

Tableid

O cursor a ser usado para essa chamada.

Ptableid

Ponteiro para tableid.

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

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

JET_errOutOfCursors

Não existem recursos de cursor disponíveis.

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.

Em caso de êxito, ptableid é definido como um cursor duplicado.

Em caso de falha, nenhuma alteração é feita. O estado de tableid é inalterado.

Comentários

O cursor duplicado não tem todo o estado do cursor copiado. O local do cursor duplicado, incluindo o índice atual, geralmente é diferente do cursor fornecido. O cursor duplicado sempre é retornado no índice clusterizado e na primeira linha da tabela. Se a tabela estiver vazia, o cursor duplicado não estará em nenhuma linha.

As tabelas abertas com JetDupCursor geralmente devem ser fechadas com JetCloseTable. A exceção a essa regra ocorre quando JetDupCursor é chamado em uma transação e a transação é revertida (com JetRollback). Ao reverter uma transação, o cursor é fechado automaticamente. Nesse caso, é um erro fechar a tabela com JetCloseTable.

O número de tabelas que podem ser abertas simultaneamente é afetado diretamente por JET_paramMaxOpenTables. Consulte Parâmetros do sistema para obter detalhes.

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

JET_GRBIT
JET_SESID
JET_TABLEID
JetCloseTable
JetRollback
JetStopService
Parâmetros do sistema