SQLSetStmtAttr

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

SQL Server Native Client ODBC-drivrutinen stöder inte den blandade (keyset/dynamiska) markörmodellen. Försök att ställa in nyckeluppsättningens storlek med SQL_ATTR_KEYSET_SIZE misslyckas om värdemängden inte är lika med 0.

Applikationen sätter SQL_ATTR_ROW_ARRAY_SIZE på alla satser för att deklarera antalet rader som returneras i ett SQLFetch - eller SQLFetchScroll-funktionsanrop . På satser som indikerar en servermarkör använder drivrutinen SQL_ATTR_ROW_ARRAY_SIZE för att bestämma storleken på blocket av rader som servern genererar för att uppfylla en hämtaförfrågan från markören. Inom blockstorleken för en dynamisk markör är radmedlemskap och ordning fasta om transaktionsisoleringsnivån är tillräcklig för att säkerställa upprepningsbara läsningar av committerade transaktioner. Markören är helt dynamisk utanför blocket som indikeras av detta värde. Servermarkörens blockstorlek är helt dynamisk och kan ändras när som helst under hämtningsprocessen.

SQLSetStmtAttr och Table-Valued parametrar

SQLSetStmtAttr kan användas för att sätta SQL_SOPT_SS_PARAM_FOCUS i applikationsparameterdescriptorn (APD) innan man öppnar deskriptorfält för tabellvärda parameterkolumner.

Om ett försök görs att sätta SQL_SOPT_SS_PARAM_FOCUS till ordinalen för en parameter som inte är en tabellvärd parameter, returnerar SQLSetStmtAttr SQL_ERROR och en diagnostisk post skapas med SQLSTATE = HY024 och meddelandet "Invalid attribute value". SQL_SOPT_SS_PARAM_FOCUS ändras inte när SQL_ERROR returneras.

Att sätta SQL_SOPT_SS_PARAM_FOCUS till 0 återställer åtkomst till deskriptorposter för parametrar.

SQLSetStmtAttr kan också användas för att sätta SQL_SOPT_SS_NAME_SCOPE. För mer information, se avsnittet SQL_SOPT_SS_NAME_SCOPE senare i detta ämne.

För mer information, se Table-Valued Parameter Metadata för förberedda uttalanden.

För mer information om tabellvärda parametrar, se Table-Valued Parameters (ODBC).

SQLSetStmtAttr-stöd för glesa kolumner

SQLSetStmtAttr kan användas för att sätta SQL_SOPT_SS_NAME_SCOPE. För mer information, se avsnittet SQL_SOPT_SS_NAME_SCOPE senare i detta ämne. För mer information om glesa kolumner, se Sparse Columns Support (ODBC).

Deklarationsattribut

SQL Server Native Client ODBC-drivrutinen stöder också följande drivrutinsspecifika satsattribut.

SQL_SOPT_SS_CURSOR_OPTIONS

Attributet SQL_SOPT_SS_CURSOR anger om drivrutinen kommer att använda drivrutinsspecifika prestandaalternativ på markörer. SQLGetData är inte tillåtet när dessa alternativ är satta. Standardinställningen är SQL_CO_OFF. ValuePtr-värdet är av typen SQLLEN.

ValuePtr-värde Description
SQL_CO_OFF Default. Inaktiverar endast snabbspolning, skrivskyddade markörer och autofetch, aktiverar SQLGetData på framåtriktade, skrivskyddade markörer. När SQL_SOPT_SS_CURSOR_OPTIONS är inställd på SQL_CO_OFF ändras inte markörtypen. Det vill säga, en markör som bara är snabbspolad kommer att förbli en markör som bara går framåt. För att ändra markörtypen måste applikationen nu ställa in en annan markörtyp med SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE.
SQL_CO_FFO Möjliggör endast snabbspolning, skrivskyddade markörer, inaktiverar SQLGetData på framåtriktade, skrivskyddade markörer.
SQL_CO_AF Aktiverar autofetch-alternativet på valfri markörtyp. När detta alternativ är inställt för ett satshandtag kommer SQLExecute eller SQLExecDirect att generera en implicit SQLFetchScroll (SQL_FIRST). Markören öppnas och den första omgången rader returneras i en enda rundresa till servern.
SQL_CO_FFO_AF Aktiverar snabbspolningsendast markörer med autofetch-alternativet. Det är samma sak som om både SQL_CO_AF och SQL_CO_FFO är specificerade.

När dessa alternativ är inställda stänger servern automatiskt markören när den upptäcker att sista raden har hämtats. Applikationen måste fortfarande anropa SQLFreeStmt (SQL_CLOSE) eller SQLCloseCursor, men drivrutinen behöver inte skicka stängningsnotifikationen till servern.

Om urvalslistan innehåller en kolumn för text, ntext eller bild , konverteras den snabbspolande markören till en dynamisk markör och SQLGetData tillåts.

SQL_SOPT_SS_DEFER_PREPARE

Attributet SQL_SOPT_SS_DEFER_PREPARE avgör om satsen förbereds omedelbart eller skjuts upp tills SQLExecute, SQLDescribeCol eller SQLDescribeParam körs. I SQL Server 7.0 och tidigare ignoreras denna egenskap (ingen uppskjuten förberedelse). ValuePtr-värdet är av typen SQLLEN.

ValuePtr-värde Description
SQL_DP_ON Default. Efter att ha anropat SQLPrepare Function skjuts formuleringsförberedelsen upp tills SQLExecute anropas eller metaegenskapsoperation (SQLDescribeCol eller SQLDescribeParam) har utförts.
SQL_DP_OFF Satsen förbereds så snart SQLPrepare körs.

SQL_SOPT_SS_REGIONALIZE

Attributet SQL_SOPT_SS_REGIONALIZE används för att bestämma datakonvertering på satsnivå. Attributet gör att drivrutinen respekterar klientens lokalinställning när datum, tid och valutavärden konverteras till teckensträngar. Konverteringen sker från SQL Server inbyggda datatyper till endast teckensträngar.

ValuePtr-värdet är av typen SQLLEN.

ValuePtr-värde Description
SQL_RE_OFF Default. Drivrutinen konverterar inte datum-, tid- och valutadata till teckensträngsdata med hjälp av klientens lokalinställning.
SQL_RE_ON Drivrutinen använder klientens lokalinställning när den konverterar datum-, tid- och valutadata till teckensträngsdata.

Regionala konverteringsinställningar gäller för valuta-, numeriska, datum- och tidsdatatyper. Konverteringsinställningen gäller endast för utdatakonverteringar när valuta-, numeriska, datum- eller tidsvärden konverteras till teckensträngar.

Note

När satsalternativet SQL_SOPT_SS_REGIONALIZE är aktiverat använder drivrutinen lokalregisterinställningarna för den aktuella användaren. Drivrutinen hedrar inte den aktuella trådens lokalitet om applikationen sätter den genom att till exempel anropa SetThreadLocale.

Att ändra det regionala beteendet hos en datakälla kan orsaka applikationsfel. En applikation som tolkar datumsträngar och förväntar sig att datumsträngar ska visas enligt ODBC:s definition kan påverkas negativt av att ändra detta värde.

SQL_SOPT_SS_TEXTPTR_LOGGING

Attributet SQL_SOPT_SS_TEXTPTR_LOGGING aktiverar loggning av operationer på kolumner som innehåller text - eller bilddata . ValuePtr-värdet är av typen SQLLEN.

ValuePtr-värde Description
SQL_TL_OFF Inaktiverar loggning av operationer som utförs på text - och bilddata .
SQL_TL_ON Default. Möjliggör loggning av operationer som utförs på text - och bilddata .

SQL_SOPT_SS_HIDDEN_COLUMNS

Attributet SQL_SOPT_SS_HIDDEN_COLUMNS exponerar, i resultatuppsättningen, kolumner som är dolda i en SQL Server SELECT FOR BROWSE-sats. Drivrutinen exponerar inte dessa kolumner som standard. ValuePtr-värdet är av typen SQLLEN.

ValuePtr-värde Description
SQL_HC_OFF Default. FOR BLÄDDRA är kolumner dolda från resultatuppsättningen.
SQL_HC_ON Exponeringar FÖR BROWSA-kolumner.

SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT

Attributet SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT returnerar meddelandetexten för förfrågan om avisering.

SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS

Attributet SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS specificerar vilka alternativ som används för förfrågan om avisering. Dessa specificeras i en sträng med name=value syntax enligt nedan. Applikationen ansvarar för att skapa tjänsten och läsa notiser från kön.

Syntaxen för frågemeddelandens optionssträng är:

service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]

Ett exempel:

service=mySSBService;local database=mydb

SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT

Attributet SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT anger hur många sekunder frågenotisen ska förbli aktiv. Standardvärdet är 432000 sekunder (5 dagar). ValuePtr-värdet är av typen SQLLEN.

SQL_SOPT_SS_PARAM_FOCUS

Attributet SQL_SOPT_SS_PARAM_FOCUS specificerar fokus för efterföljande anrop av SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec och SQLSetDescRec.

Typen för SQL_SOPT_SS_PARAM_FOCUS är SQLULEN.

Standard är 0, vilket betyder att dessa anrop adresserar parametrar som motsvarar parametermarkörer i SQL-satsen. När de sätts till parameternumret för en tabellvärd parameter adresserar dessa anrop kolumner för den tabellvärda parametern. När de sätts till ett värde som inte är parameternumret för en tabellvärd parameter, returnerar dessa anrop felet IM020: "Parameter focus doesn't refer to a table-worthd parameter".

SQL_SOPT_SS_NAME_SCOPE

Attributet SQL_SOPT_SS_NAME_SCOPE specificerar namnomfånget för efterföljande katalogfunktionsanrop. Resultatmängden som returneras av SQLColumns beror på inställningen SQL_SOPT_SS_NAME_SCOPE.

Typen för SQL_SOPT_SS_NAME_SCOPE är SQLULEN.

ValuePtr-värde Description
SQL_SS_NAME_SCOPE_TABLE Default.

När tabellvärda parametrar används indikeras att metadata för faktiska tabeller ska returneras.

När man använder funktionen för glesa kolumner returnerar SQLColumns endast kolumner som inte är medlemmar i den gles column_set.
SQL_SS_NAME_SCOPE_TABLE_TYPE Indikerar att applikationen kräver metadata för en tabelltyp, snarare än en faktisk tabell (katalogfunktioner bör returnera metadata för tabelltyper). Applikationen skickar sedan TYPE_NAME av tabellvärda parametern som TableName-parametern .
SQL_SS_NAME_SCOPE_EXTENDED När man använder funktionen för sparsamma kolumner returnerar SQLColumns alla kolumner, oavsett column_set medlemskap.
SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET När man använder funktionen för glesa kolumner returnerar SQLColumns endast kolumner som är medlemmar i den gles column_set.
SQL_SS_NAME_SCOPE_DEFAULT Lika med SQL_SS_NAME_SCOPE_TABLE.

SS_TYPE_CATALOG_NAME och SS_TYPE_SCHEMA_NAME används tillsammans med parametrarna CatalogName respektive SchemaName för att identifiera katalogen och schemat för tabellvärda parametern. När en applikation har hämtat metadata för tabellvärda parametrar måste den återställa SQL_SOPT_SS_NAME_SCOPE till dess standardvärde SQL_SS_NAME_SCOPE_TABLE.

När SQL_SOPT_SS_NAME_SCOPE är inställd på SQL_SS_NAME_SCOPE_TABLE misslyckas förfrågningar till länkade servrar. Anrop till SQLColumns eller SQLPrimaryKeys med en katalog som innehåller en serverkomponent kommer att misslyckas.

Om du försöker sätta SQL_SOPT_SS_NAME_SCOPE till ett ogiltigt värde returneras SQL_ERROR och en diagnostisk post genereras med SQLSTATE HY024 och meddelandet "Ogiltigt attributvärde".

Om en katalogfunktion annan än SQLTables, SQLColumns eller SQLPrimaryKeys anropas när SQL_SOPT_SS_NAME_SCOPE har ett annat värde än SQL_SS_NAME_SCOPE_TABLE, returneras SQL_ERROR. En diagnostisk post genereras med SQLSTATE HY010 och meddelandet "Function sequence error (SQL_SOPT_SS_NAME_SCOPE is not set to SQL_SS_NAME_SCOPE_TABLE)".