Korzystanie z domyślnych zestawów wyników SQL Server

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Domyślne atrybuty kursora ODBC to:

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

Za każdym razem, gdy te atrybuty są ustawione na domyślne, sterownik ODBC dla natywnego klienta SQL Server używa domyślnego zestawu wyników SQL Server. Domyślne zbiory wyników mogą być używane dla dowolnych instrukcji SQL obsługiwanych przez SQL Server i są najwydajniejszą metodą przesyłania całego zbioru wyników do klienta.

SQL Server 2005 (9.x) wprowadził obsługę wielu aktywnych zestawów wyników (MARS); aplikacje mogą teraz mieć więcej niż jeden aktywny domyślny zestaw wyników na jedno połączenie. MARS nie jest domyślnie włączony.

Przed SQL Server 2005 (9.x) domyślne zestawy wyników nie obsługiwały wielu aktywnych instrukcji na tym samym połączeniu. Po wykonaniu instrukcji SQL na połączeniu serwer nie akceptuje poleceń (z wyjątkiem żądania anulowania reszty zbioru wyników) od klienta na tym połączeniu, dopóki wszystkie wiersze w zestawie wyników nie zostaną przetworzone. Aby anulować pozostałą część częściowo przetworzonego zbioru wyników, wywołaj SQLCloseCursor lub SQLFreeStmt z parametrem fOption ustawionym na SQL_CLOSE. Aby zakończyć częściowo przetworzony zestaw wyników i przetestować obecność innego zestawu wyników, wywołaj SQLMoreResults. Jeśli aplikacja ODBC spróbuje wykonać polecenie na umiście połączenia przed pełnym przetworzeniem domyślnego zestawu wyników, wywołanie generuje SQL_ERROR i wywołanie do SQLGetDiagRec zwraca:

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