Användning av SQL Server standardresultatuppsättningar

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

De standard ODBC-markörattributen är:

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

När dessa attribut är inställda till sina standardinställningar använder SQL Server Native Client ODBC-drivrutinen en SQL Server standardresultatuppsättning. Standardresultatuppsättningar kan användas för alla SQL-satser som stöds av SQL Server och är den mest effektiva metoden för att överföra en hel resultatuppsättning till klienten.

SQL Server 2005 (9.x) introducerade stöd för flera aktiva resultatuppsättningar (MARS); applikationer kan nu ha mer än en aktiv standardresultatuppsättning per anslutning. MARS är inte aktiverad som standard.

Före SQL Server 2005 (9.x) stödde standardresultatuppsättningar inte flera aktiva satser på samma anslutning. Efter att en SQL-sats har körts på en anslutning accepterar servern inga kommandon (förutom en begäran om att avbryta resten av resultatuppsättningen) från klienten på den anslutningen förrän alla rader i resultatuppsättningen har behandlats. För att avbryta resten av en delvis bearbetad resultatuppsättning, anropa SQLCloseCursor eller SQLFreeStmt med fOption-parametern satt till SQL_CLOSE. För att slutföra en delvis bearbetad resultatuppsättning och testa för närvaron av en annan resultatuppsättning, anropa SQLMoreResults. Om en ODBC-applikation försöker ett kommando på en anslutningshantering innan en standardresultatuppsättning har bearbetats helt, genererar anropet SQL_ERROR och ett anrop till SQLGetDiagRec returnerar:

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