Použití výchozích sad výsledků SQL Server

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instanceazure Synapse Analytics

Výchozí atributy kurzoru ODBC jsou:

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);  

Kdykoli jsou tyto atributy nastaveny na výchozí hodnoty, ovladač SQL Server Native Client ODBC používá výchozí sadu výsledků SQL Server. Výchozí sady výsledků lze použít pro jakýkoli SQL příkaz podporovaný SQL Server a jsou nejefektivnější metodou přenosu celé sady výsledků klientovi.

SQL Server 2005 (9.x) zavedl podporu více aktivních sad výsledků (MARS); aplikace nyní mohou mít více než jednu výchozí aktivní sadu výsledků na jedno připojení. MARS není ve výchozím nastavení zapnut.

Před SQL Server 2005 (9.x) výchozí sady výsledků nepodporovaly více aktivních příkazů na stejném připojení. Po provedení SQL příkazu na spojení server nepřijímá příkazy (kromě požadavku na zrušení zbytku výsledné sady) od klienta na tomto spojení, dokud nejsou všechny řádky ve výsledné sadě zpracovány. Pro zrušení zbytku částečně zpracované sady výsledků volejte SQLCloseCursor nebo SQLFreeStmt s parametrem fOption nastaveným na SQL_CLOSE. Pro dokončení částečně zpracované sady výsledků a testování přítomnosti jiné sady výsledků volejte SQLMoreResults. Pokud aplikace ODBC pokusí příkaz na handle spojení dříve, než je výchozí sada výsledků kompletně zpracována, volání vygeneruje SQL_ERROR a volání SQLGetDiagRec vrátí:

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