Utilização de Conjuntos de Resultados Padrão do SQL Server

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)

Os atributos padrão do cursor 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 estes atributos são definidos para os seus valores predefinidos, o driver ODBC do SQL Server Native Client utiliza um conjunto de resultados predefinido do SQL Server. Os conjuntos de resultados por defeito podem ser usados para qualquer instrução SQL suportada pelo SQL Server, e são o método mais eficiente para transferir um conjunto de resultados completo para o cliente.

O SQL Server 2005 (9.x) introduziu suporte para múltiplos conjuntos de resultados ativos (MARS); as aplicações podem agora ter mais do que um conjunto de resultados ativo por padrão por ligação. O MARS não está ativado por defeito.

Antes do SQL Server 2005 (9.x), os conjuntos de resultados por defeito não suportavam múltiplas instruções ativas na mesma ligação. Depois de uma instrução SQL ser executada numa ligação, o servidor não aceita comandos (exceto um pedido para cancelar o restante conjunto de resultados) do cliente nessa ligação até que todas as linhas do conjunto de resultados tenham sido processadas. Para cancelar o restante de um conjunto de resultados parcialmente processado, chame SQLCloseCursor ou SQLFreeStmt com o parâmetro fOption definido para SQL_CLOSE. Para terminar um conjunto de resultados parcialmente processado e testar a presença de outro conjunto de resultados, chame SQLMoreResults. Se uma aplicação ODBC tentar um comando num handle de ligação antes de um conjunto de resultados padrão ter sido completamente processado, a chamada gera SQL_ERROR e uma chamada para SQLGetDiagRec retorna:

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