SQLSetStmtAttr

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Az SQL Server Native Client ODBC illezőprogramja nem támogatja a vegyes (kulcskészlet/dinamikus) kurzormodellt. A kulcskészlet méretének beállítása SQL_ATTR_KEYSET_SIZE segítségével sikertelen, ha az értékhalmaz nem egyenlő 0-val.

Az alkalmazás minden utasításon beállítja SQL_ATTR_ROW_ARRAY_SIZE, hogy kimondja, hány sor tér vissza egy SQLFetch vagy SQLFetchScroll függvényhíváson. Szerver kurzort jelölő utasítások esetén az illesztőprogram SQL_ATTR_ROW_ARRAY_SIZE-t használ arra, hogy meghatározza, mekkora a sorblokk a szerver generál a kurzor által generált fetch kérés teljesítéséhez. A dinamikus kurzor blokkméretén belül a sortagság és sorrend rögzített, ha a tranzakciós izolációs szint elegendő ahhoz, hogy a kötelezett tranzakciók ismételhető olvasmányai legyenek. A kurzor teljesen dinamikus azon a blokkon kívül, amelyet ez az érték jelez. A szerver kurzorblokk mérete teljesen dinamikus, és bármikor megváltoztatható a fetch feldolgozás során.

SQLSetStmtAttr and Table-Valued Parameters

Az SQLSetStmtAttr segítségével SQL_SOPT_SS_PARAM_FOCUS beállítása az alkalmazásparaméter leíróban (APD) azelőtt megközelíthető a leírásmezők megkeresése táblaértékű paraméteroszlopokhoz.

Ha megpróbálják SQL_SOPT_SS_PARAM_FOCUS-t egy olyan paraméter ordinaljára állítani, amely nem táblázatértékű paraméter, az SQLSetStmtAttr SQL_ERROR-et ad vissza, és diagnosztikai rekordot hoznak létre SQLSTATE = HY024 jelzéssel, valamint a "Invalid attribútumérték" üzenettel. SQL_SOPT_SS_PARAM_FOCUS nem változik, amikor SQL_ERROR visszaadják.

Ha SQL_SOPT_SS_PARAM_FOCUS 0-ra állítva visszaállítja a paraméterek leíró rekordjait.

Az SQLSetStmtAttr is használható SQL_SOPT_SS_NAME_SCOPE beállítására. További információért lásd a SQL_SOPT_SS_NAME_SCOPE szakaszt, amely később ebben a témában található.

További információért lásd Table-Valued Paraméter Metadata for Prepared Statements.

További információért a táblázatértékű paraméterekről lásd Table-Valued Paramétereket (ODBC).

SQLSetStmtAttr Support for Sparse Columns

Az SQLSetStmtAttr segítségével SQL_SOPT_SS_NAME_SCOPE beállítása is lehetséges. További információért lásd a SQL_SOPT_SS_NAME_SCOPE szakaszt, amely később ebben a témában található. További információért a ritka oszlopokról lásd: Sparse Columns Support (ODBC).

Nyilatkozat-attribútumok

Az SQL Server Native Client ODBC illezőprogramja támogatja az alábbi illesztőszer-specifikus utasítás attribútumokat is.

SQL_SOPT_SS_CURSOR_OPTIONS

A SQL_SOPT_SS_CURSOR attribútum meghatározza azt, hogy a meghajtó használ-e illesztőspecifikus teljesítményopciókat a kurzorokon. Az SQLGetData nem engedélyezett, ha ezek az opciók be vannak állítva. Az alapértelmezett beállítás SQL_CO_OFF. A ValuePtr érték SQLLEN típusú.

ValuePtr érték Description
SQL_CO_OFF Default. Letiltja a gyorsítás, csak olvasható kurzorokat és az automatikus lekérést, lehetővé teszi az SQLGetData átviteli és csak olvasható kurzorokon. Ha SQL_SOPT_SS_CURSOR_OPTIONS SQL_CO_OFF-re van állítva, a kurzor típusa nem változik. Vagyis a csak előretekerésre használható kurzor továbbra is csak előretekerő kurzor marad. A kurzor típusának megváltoztatásához az alkalmazásnak most egy másik kurzortípust kell beállítania SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE használatával.
SQL_CO_FFO Lehetővé teszi a gyorsítást, csak olvasásra alkalmas kurzorokat, és letiltja az SQLGetData előrehaladó, csak olvasható kurzorokon.
SQL_CO_AF Engedélyezi az automatikus lekérés opciót bármely kurzortípuson. Ha ezt az opciót állítják be egy utasításkezelőre, az SQLExecute vagy SQLExecDirect implicit SQLFetchScroll (SQL_FIRST) generálja. A kurzort megnyitják, és az első sorok egyetlen körúttal visszakerülnek a szerverhez.
SQL_CO_FFO_AF Lehetővé teszi a gyorsításra használható kurzorokat az automatikus lefoglalás opcióval. Ugyanaz, mintha mind a SQL_CO_AF, mind a SQL_CO_FFO meg lenne jelölve.

Amikor ezek az opciók beállítottak, a szerver automatikusan bezárja a kurzort, amikor felismeri, hogy az utolsó sort lehozták. Az alkalmazásnak továbbra is hívnia kell SQLFreeStmt (SQL_CLOSE) vagy SQLCloseCursort, de az illesztőprogramnak nem kell a zárási értesítést küldenie a szervernek.

Ha a kiválasztó lista tartalmaz szöveg-, ntext- vagy képoszlopot , a gyorsításra vezető kurzor dinamikus kurzorrá alakul, és engedélyezett az SQLGetData használata.

SQL_SOPT_SS_DEFER_PREPARE

A SQL_SOPT_SS_DEFER_PREPARE attribútum határozza meg, hogy az utasítást azonnal elkészítik-e, vagy elhalasztják, amíg az SQLExecute, SQLDescribeCol vagy SQLDescribeParam el nem futnak. Az SQL Server 7.0-ban és korábbi verziókban ezt a tulajdonságot figyelmen kívül hagyják (nincs halasztott előkészület). A ValuePtr érték SQLLEN típusú.

ValuePtr érték Description
SQL_DP_ON Default. Az SQLPrepare függvény hívása után az utasítás előkészítése elhalasztódik, amíg az SQLExecute meghívása vagy a metaproperty művelet (SQLDescribeCol vagy SQLDescribeParam) végrehajtása nem történik.
SQL_DP_OFF A nyilatkozatot az SQLPrepare végrehajtása után készítik el.

SQL_SOPT_SS_REGIONALIZE

A SQL_SOPT_SS_REGIONALIZE attribútumot használják az adatátalakítás meghatározására az állítás szintjén. Az attribútum arra készteti az illesztőt, hogy tiszteletben tartsa a kliens helyi beállítását, amikor dátum, idő- és valutaértékeket karakterláncokká alakít. Az átváltás az SQL Server natív adattípusairól csak karakter sorokra történik.

A ValuePtr érték SQLLEN típusú.

ValuePtr érték Description
SQL_RE_OFF Default. Az illezőprogram nem konvertálja a dátum, idő- és pénzadatokat karakterlánc adatává a kliens helyi beállítás használatával.
SQL_RE_ON Az illesztőprogram a kliens helyi beállítást használja, amikor dátum, idő és valuta adatokat karakterlánc adatokká alakít.

A regionális konverziós beállítások a valuta, numerikus, dátum- és időpont adattípusokra vonatkoznak. Az átváltási beállítás csak akkor alkalmazható kimeneti átváltásokra, amikor a pénz, szám, dátum vagy idő értékeket karakterláncokká alakítják át.

Note

Amikor a SQL_SOPT_SS_REGIONALIZE kijelentésopció be van kapcsolva, az illesztőprogram a jelenlegi felhasználó helyi nyilvántartási beállításait használja. Az illesztőprogram nem tiszteli meg a jelenlegi szál helyét, ha az alkalmazás például a SetThreadLocale hívásával állítja be.

Az adatforrás regionális viselkedésének megváltoztatása alkalmazáshibát okozhat. Egy olyan alkalmazás, amely a dátum láncsorokat elemzi és elvárja, hogy az ODBC által meghatározott dátumsorozatok megjelenjenek, hátrányosan érinthető az érték megváltoztatása.

SQL_SOPT_SS_TEXTPTR_LOGGING

A SQL_SOPT_SS_TEXTPTR_LOGGING attribútum átkapcsolja azokat a műveletek naplózását oszlopoknál, amelyek szöveget vagy képadatokat tartalmaznak. A ValuePtr érték SQLLEN típusú.

ValuePtr érték Description
SQL_TL_OFF Letiltja a szöveg - és képadatokon végzett műveletek naplózását.
SQL_TL_ON Default. Lehetővé teszi a szöveg - és képadatokon végzett műveletek naplózását.

SQL_SOPT_SS_HIDDEN_COLUMNS

A SQL_SOPT_SS_HIDDEN_COLUMNS attribútum az eredményhalmazban rejtett oszlopokat tár fel egy SQL Server SELECT FOR BROWSE utasításban. A meghajtó alapértelmezés szerint nem teszi ki ezeket az oszlopokat. A ValuePtr érték SQLLEN típusú.

ValuePtr érték Description
SQL_HC_OFF Default. A FOR BROWSE oszlopok el vannak rejtve az eredményhalmazból.
SQL_HC_ON Nyílt megjelenítés OLDALAS oszlopokhoz.

SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT

A SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT attribútum visszaadja az üzenet szövegét a lekérdezési értesítési kérelmhez.

SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS

A SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS attribútum megadja a lekérdezési értesítési kéréshez használt opciókat. Ezeket egy stringben határozzák meg, amelynek name=value szintaxisa az alábbiakban van megadva. Az alkalmazás felelős a szolgáltatás létrehozásáért és az értesítések sorból való olvasásáért.

A lekérdezési értesítések opciók láncsorának szintaxisa a következő:

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

Például:

service=mySSBService;local database=mydb

SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT

A SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT attribútum megadja, hány másodpercig kell a lekérdezési értesítésnek aktív maradnia. Az alapértelmezett érték 432000 másodperc (5 nap). A ValuePtr érték SQLLEN típusú.

SQL_SOPT_SS_PARAM_FOCUS

A SQL_SOPT_SS_PARAM_FOCUS attribútum megadja a következő SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec és SQLSetDescRec hívások fókuszát.

A SQL_SOPT_SS_PARAM_FOCUS típusa SQLULEN.

Az alapértelmezett 0, ami azt jelenti, hogy ezek a hívások olyan paramétereket címeznek, amelyek megfelelnek az SQL utasítás paraméterjelzőinek. Ha egy táblázatértékű paraméter paraméterére állítva ezek a táblázatértékű paraméter oszlopait hívják meg. Ha olyan értéket állítunk be, amely nem egy táblázatértékű paraméter paraméterszáma, ezek a hívások az IM020 hibát adják vissza: "A paraméterfókusz nem utal egy táblázatértékű paraméterre".

SQL_SOPT_SS_NAME_SCOPE

A SQL_SOPT_SS_NAME_SCOPE attribútum megadja a következő katalógus függvényhívások névterjedelmét. Az SQLColumns által visszaadott eredményhalmaz a SQL_SOPT_SS_NAME_SCOPE beállításától függ.

A SQL_SOPT_SS_NAME_SCOPE típusa SQLULEN.

ValuePtr érték Description
SQL_SS_NAME_SCOPE_TABLE Default.

Táblázatértékű paraméterek használata esetén azt jelzi, hogy a tényleges táblák metaadatait kell visszaadni.

A sparse columns funkció használatakor az SQLColumns csak olyan oszlopokat ad vissza, amelyek nem tagjai a sparse column_set-nek.
SQL_SS_NAME_SCOPE_TABLE_TYPE Azt jelzi, hogy az alkalmazás egy táblatípushoz metaadatot igényel, nem pedig tényleges táblához (a katalógusfüggvényeknek vissza kell adniuk a metaadatokat a táblatípusokhoz). Az alkalmazás ezután a táblázat értékű paraméter TYPE_NAME-jét TableName paraméterként továbbítja.
SQL_SS_NAME_SCOPE_EXTENDED A ritka oszlopok funkció használatakor az SQLColumns minden oszlopot visszaad, függetlenül column_set tagságtól.
SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET A ritka oszlopok funkció használatakor az SQLColumns csak azokat az oszlopokat adja vissza, amelyek a ritka column_set tagjai.
SQL_SS_NAME_SCOPE_DEFAULT Egyenlő SQL_SS_NAME_SCOPE_TABLE.

SS_TYPE_CATALOG_NAME és SS_TYPE_SCHEMA_NAME a CatalogName és a SchemaName paraméterekkel együtt használják a táblázatértékű paraméter katalógusának és sémájának azonosítására. Amikor egy alkalmazás befejezte a táblázatértékű paraméterek metaadatai letöltését, vissza kell állítania SQL_SOPT_SS_NAME_SCOPE alapértelmezett értékére, SQL_SS_NAME_SCOPE_TABLE-re.

Amikor SQL_SOPT_SS_NAME_SCOPE SQL_SS_NAME_SCOPE_TABLE-re van állítva, a linkelt szerverekhez tartozó lekérdezések megbuknak. Az SQLColumns vagy SQLPrimaryKeys hívások, amelyek katalógusa szerverkomponenst tartalmaz, meghibásodik.

Ha megpróbálod SQL_SOPT_SS_NAME_SCOPE-t érvénytelen értékre állítani, SQL_ERROR jelenik meg, és diagnosztikai rekordot generálnak SQLSTATE HY024-gyel, valamint az "Invalid attribute value" üzenetet.

Ha egy katalógusfüggvényt, ami nem SQLTables, SQLColumns vagy SQLPrimaryKeys működik, akkor hívják meg, ha SQL_SOPT_SS_NAME_SCOPE értéke nem SQL_SS_NAME_SCOPE_TABLE, akkor SQL_ERROR visszatér. Az SQLSTATE HY010-nél diagnosztikai rekordot generálnak, és az "Function sequence error (SQL_SOPT_SS_NAME_SCOPE is not set to SQL_SS_NAME_SCOPE_TABLE)" üzenetet írnak.