Compartilhar via


Usando conjuntos de resultados padrão do SQL Server

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

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 do SQL Server Native Client usa um conjunto de resultados padrão do SQL Server. Os conjuntos de resultados padrão podem ser usados para qualquer instrução SQL compatível com o SQL Server e são o método mais eficiente de transferir um conjunto de resultados inteiro para o cliente.

O SQL Server 2005 (9.x) introduziu o 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 do SQL Server 2005 (9.x), os conjuntos de resultados padrão não ofereciam 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 tenham sido 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."  

Confira também

Como os cursores são implementados