Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Alguns drivers ODBC apenas suportam as definições padrão do cursor; estes drivers também não suportam operações de cursor posicionado, como SQLSetPos. A biblioteca de cursores ODBC é um componente dos Microsoft Data Access Components (MDAC) usado para implementar cursores bloco ou estáticos num driver que normalmente não os suporta. A biblioteca de cursores também implementa instruções positioned UPDATE and DELETE e SQLSetPos para os cursores que cria.
A biblioteca de cursores ODBC é implementada como uma camada entre o Gestor de Drivers ODBC e um driver ODBC. Se a biblioteca de cursores ODBC for carregada, o ODBC Driver Manager encaminha todos os comandos relacionados com cursores para a biblioteca de cursores em vez do driver. A biblioteca de cursores implementa um cursor ao obter todo o conjunto de resultados do driver subjacente e armazenar o conjunto de resultados em cache no cliente. Ao utilizar a biblioteca de cursores ODBC, a aplicação está limitada à funcionalidade de cursor da biblioteca de cursores; Qualquer suporte para funcionalidades adicionais de cursor no driver subjacente não está disponível para a aplicação.
Há pouca necessidade de usar a biblioteca de cursores ODBC com o driver ODBC do SQL Server Native Client porque o próprio driver suporta mais funcionalidades de cursores do que a biblioteca ODBC. A única razão para usar a biblioteca de cursores ODBC com o driver ODBC do SQL Server Native Client é porque o driver implementa o seu suporte a cursores através de cursores de servidor, e os cursores de servidor não suportam todas as instruções SQL. Sempre que for necessário ter um cursor estático com procedimentos armazenados, lotes ou instruções SQL contendo COMPUTE, COMPUTE BY, FOR BROWSE ou INTO, considere usar a biblioteca de cursores ODBC. No entanto, deve ter-se cuidado com a biblioteca de cursores porque ela armazena em cache todo o conjunto de resultados no cliente, que pode consumir grandes quantidades de memória e desempenho lento.
Uma aplicação invoca a biblioteca de cursores numa base de ligação a ligação, usando SQLSetConnectAttr para definir o atributo de ligação SQL_ATTR_ODBC_CURSORS antes de se ligar a uma fonte de dados. SQL_ATTR_ODBC_CURSORS é definido para um de três valores:
SQL_CUR_USE_ODBC
Quando esta opção é definida com o driver ODBC do SQL Server Native Client, a biblioteca de cursores ODBC sobrepõe o suporte nativo de cursores do driver ODBC do SQL Server Native Client. Apenas os tipos de cursor suportados pela biblioteca de cursores podem ser usados para a ligação; Os cursores do servidor não podem ser usados.
SQL_CUR_USE_DRIVER
Quando esta opção está definida, todo o suporte de cursor nativo ao driver ODBC do SQL Server Native Client pode ser usado para a ligação. A biblioteca de cursores ODBC não pode ser utilizada. Todos os cursores são implementados como cursores de servidor.
SQL_CUR_USE_IF_NEEDED
Quando esta opção está definida, o efeito é o mesmo que SQL_CUR_USE_DRIVER quando usado com o driver ODBC SQL Server Native Client. No momento da ligação, o ODBC Driver Manager testa se o driver ODBC a que está ligado suporta a opção SQL_FETCH_PRIOR SQLFetchScroll. Se o driver não suportar a opção, o ODBC Driver Manager carrega a biblioteca de cursores ODBC. Se o driver suportar essa opção, o ODBC Driver Manager não carrega a biblioteca de cursores ODBC e a aplicação utiliza o suporte nativo do driver. Como o driver ODBC SQL Server Native Client suporta SQL_FETCH_PRIOR, o ODBC Driver Manager não carrega a biblioteca de cursores ODBC.
A biblioteca de cursores permite que as aplicações usem múltiplas instruções ativas numa ligação, bem como cursores móveis e atualizáveis. A biblioteca de cursores tem de ser carregada para suportar esta funcionalidade. Use SQLSetConnectAttr para especificar como a biblioteca de cursores deve ser usada e SQLSetStmtAttr para especificar o tipo de cursor, a concorrência e o tamanho do conjunto de linhas.