Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
När den är ansluten till en instans av SQL Server stödjer SQL Server Native Client ODBC-drivrutinen prestandaoptimeringar för framåtriktade, skrivskyddade markörer. Framåtspolande endast kursorer implementeras internt av drivrutinen och servern på ett sätt som liknar standardresultatuppsättningar. Förutom hög prestanda har även snabbspolningsmarkörer dessa egenskaper:
SQLGetData stöds inte. Resultatuppsättningskolumnerna måste vara bundna till programvariabler.
Servern stänger automatiskt markören när markörens ände upptäcks. Applikationen måste fortfarande anropa SQLCloseCursor eller SQLFreeStmt(SQL_CLOSE), men drivrutinen behöver inte skicka close-förfrågan till servern. Detta sparar en tur och retur över nätverket till servern.
Applikationen begär snabbspolningsendast kursorer med hjälp av det drivrutinsspecifika satsattributet SQL_SOPT_SS_CURSOR_OPTIONS. När den är inställd på SQL_CO_FFO är snabbspolningsmarkörer aktiverade utan autofetch. När den är inställd på SQL_CO_FFO_AF är autofetch-alternativet också aktiverat. För mer information om autofetch, se Att använda autofetch med ODBC-kursorer.
Snabbspolande markörer med autofetch kan användas för att hämta en liten resultatuppsättning med endast en rundresa till servern. I dessa steg är n antalet rader som ska returneras:
Ställ SQL_SOPT_SS_CURSOR_OPTIONS på SQL_CO_FFO_AF.
Ställ SQL_ATTR_ROW_ARRAY_SIZE till n + 1.
Bind resultatkolumnerna till arrayer med n + 1 element (för säkerhets skull om n + 1 rader faktiskt hämtas).
Öppna markören med antingen SQLExecDirect eller SQLExecute.
Om returstatusen är SQL_SUCCESS, anropa då SQLFreeStmt eller SQLCloseCursor för att stänga markören. All data för raderna kommer att finnas i de bundna programvariablerna.
Med dessa steg skickar SQLExecDirect eller SQLExecute en förfrågan om att öppna markören med autofetch-alternativet aktiverat. På den enda förfrågan från klienten gör servern:
Öppnar markören.
Bygger resultatuppsättningen och skickar raderna till klienten.
Eftersom raduppsättningens storlek sattes till 1 mer än antalet rader i resultatuppsättningen, upptäcker servern markörens ände och stänger markören.