Share via


Usando conjuntos de resultados padrão do SQL Server

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Os atributos padrão de cursor do ODBC são:

SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY, SQL_IS_INTEGER);  
SQLSetStmtAttr(hstmt, SQL_ATTR_CONCURRENCY, SQL_CONCUR_READ_ONLY, SQL_IS_INTEGER);  
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, 1, SQL_IS_INTEGER);  

Sempre que esses atributos são definidos como seus padrões, o driver ODBC SQL Server Native Client usa um SQL Server conjunto de resultados padrão. Os conjuntos de resultados padrão podem ser usados para qualquer instrução SQL compatível com SQL Server e são o método mais eficiente de transferir um conjunto de resultados inteiro para o cliente.

SQL Server 2005 (9.x) introduziu suporte para vários conjuntos de resultados ativos (MARS); os aplicativos agora podem ter mais de um conjunto de resultados padrão ativo por conexão. O MARS não está habilitado por padrão.

Antes SQL Server 2005 (9.x), os conjuntos de resultados padrão não davam suporte a várias instruções ativas na mesma conexão. Depois que uma instrução SQL é executada em uma conexão, o servidor não aceita comandos (exceto uma solicitação para cancelar o restante do conjunto de resultados) do cliente nessa conexão até que todas as linhas do conjunto de resultados sejam processadas. Para cancelar o restante de um conjunto de resultados parcialmente processado, chame SQLCloseCursor ou SQLFreeStmt com o parâmetro fOption definido como SQL_CLOSE. Para concluir um conjunto de resultados parcialmente processado e testar a presença de outro conjunto de resultados, chame SQLMoreResults. Se um aplicativo ODBC tentar um comando em um identificador de conexão antes que um conjunto de resultados padrão tenha sido completamente processado, a chamada gerará SQL_ERROR e uma chamada para SQLGetDiagRec retornará:

szSqlState: "HY000", pfNativeError: 0  
szErrorMsg: "[Microsoft][SQL Server Native Client]  
                Connection is busy with results for another hstmt."  

Consulte Também

Como os cursores são implementados