Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
Nativní klientský ODBC ovladač SQL Server nepodporuje smíšený (klíčová/dynamický) kurzorový model. Pokusy o nastavení velikosti klíčové sady pomocí SQL_ATTR_KEYSET_SIZE selžou, pokud hodnota není rovna 0.
Aplikace nastavuje SQL_ATTR_ROW_ARRAY_SIZE na všechny příkazy tak, aby deklarovala počet řádků vrácených při volání funkce SQLFetch nebo SQLFetchScroll . U příkazů označujících kurzor serveru ovladač SQL_ATTR_ROW_ARRAY_SIZE použije k určení velikosti bloku řádků, které server generuje pro uspokojení požadavku na načtení kurzoru. V rámci velikosti bloku dynamického kurzoru je členství v řádku a pořadí pevně dané, pokud je úroveň izolace transakcí dostatečná k zajištění opakovatelných čtení zavázaných transakcí. Kurzor je zcela dynamický mimo blok označený touto hodnotou. Velikost bloku kurzoru serveru je zcela dynamická a lze ji měnit kdykoli během načítaní.
SQLSetStmtAttr a Table-Valued parametry
SQLSetStmtAttr lze použít k nastavení SQL_SOPT_SS_PARAM_FOCUS v aplikačním parametrovém deskriptoru (APD) před přístupem k deskriptorovým polím pro tabulkově hodnotové sloupce.
Pokud se pokusí nastavit SQL_SOPT_SS_PARAM_FOCUS na ordinál parametru, který není parametrem s tabulkovou hodnotou, SQLSetStmtAttr vrátí SQL_ERROR a vytvoří diagnostický záznam s SQLSTATE = HY024 a zprávou "Invalid attribute value". SQL_SOPT_SS_PARAM_FOCUS se při vrácení SQL_ERROR nemění.
Nastavení SQL_SOPT_SS_PARAM_FOCUS na 0 obnoví přístup k descriptorovým záznamům pro parametry.
SQLSetStmtAttr lze také použít k nastavení SQL_SOPT_SS_NAME_SCOPE. Pro více informací viz sekce SQL_SOPT_SS_NAME_SCOPE později v tomto tématu.
Pro více informací viz Table-Valued Metadata parametrů pro připravené výpisy.
Pro více informací o tabulkových parametrech viz Table-Valued Parametry (ODBC).
SQLSetStmtAttr podpora pro sparse columns
SQLSetStmtAttr lze použít k nastavení SQL_SOPT_SS_NAME_SCOPE. Pro více informací viz sekce SQL_SOPT_SS_NAME_SCOPE později v tomto tématu. Pro více informací o řídkých sloupcích viz Sparse Columns Support (ODBC).
Atributy prohlášení
Nativní klientský ODBC ovladač SQL Server také podporuje následující specifické atributy příkazu pro ovladač.
SQL_SOPT_SS_CURSOR_OPTIONS
Atribut SQL_SOPT_SS_CURSOR určuje, zda ovladač použije specifické výkonnostní možnosti kurzorů. SQLGetData není povolena, pokud jsou tyto možnosti nastaveny. Výchozí nastavení je SQL_CO_OFF. Hodnota ValuePtr je typu SQLLEN.
| ValuePtr hodnota | Description |
|---|---|
| SQL_CO_OFF | Výchozí. Vypíná pouze rychlé převíjení, pouze čtecí kurzory a automatické načítání, umožňuje SQLGetData na kurzorech pouze pro dopředání a čtení. Když je SQL_SOPT_SS_CURSOR_OPTIONS nastaveno na SQL_CO_OFF, typ kurzoru se nezmění. To znamená, že kurzor pouze pro přetáčení vpřed zůstane kurzorem pouze pro přetáčení vpřed. Pro změnu typu kurzoru musí aplikace nyní nastavit jiný typ kurzoru pomocí SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE. |
| SQL_CO_FFO | Povoluje kurzory pouze pro rychlé přetáčení a pouze pro čtení, deaktivuje SQLGetData u kurzorů pouze pro přesměrování a čtení. |
| SQL_CO_AF | Umožňuje automatické načítání na jakémkoli typu kurzoru. Když je tato volba nastavena pro příkazový handle, SQLExecute nebo SQLExecDirect vygenerují implicitní SQLFetchScroll (SQL_FIRST). Kurzor se otevře a první várka řádků se vrátí v jednom oběhu zpět na server. |
| SQL_CO_FFO_AF | Umožňuje pouze rychlé přetáčení kurzorů s možností automatického načítání. Je to stejné, jako kdyby byly specifikovány jak SQL_CO_AF, tak SQL_CO_FFO. |
Když jsou tyto možnosti nastaveny, server automaticky uzavře kurzor, jakmile zjistí, že poslední řádek byl načten. Aplikace musí stále volat SQLFreeStmt (SQL_CLOSE) nebo SQLCloseCursor, ale ovladač nemusí posílat oznámení o ukončení na server.
Pokud seznam výběru obsahuje text, ntext nebo sloupec obrázků, kurzor pouze pro rychlé převídání je převeden na dynamický kurzor a je povolen SQLGetData.
SQL_SOPT_SS_DEFER_PREPARE
Atribut SQL_SOPT_SS_DEFER_PREPARE určuje, zda je příkaz připraven okamžitě, nebo odložen do spuštění SQLExecute, SQLDescribeCol nebo SQLDescribeParam . V SQL Server 7.0 a starších je tato vlastnost ignorována (žádné odložené přípravy). Hodnota ValuePtr je typu SQLLEN.
| ValuePtr hodnota | Description |
|---|---|
| SQL_DP_ON | Výchozí. Po zavolání funkce SQLPrepare je příprava příkazu odložena, dokud není vyvoláno SQLExecute nebo není vykonána operace metavlastností (SQLDescribeCol nebo SQLDescribeParam). |
| SQL_DP_OFF | Příkaz je připraven ihned po spuštění SQLPrepe . |
SQL_SOPT_SS_REGIONALIZE
Atribut SQL_SOPT_SS_REGIONALIZE se používá k určení konverze dat na úrovni příkazu. Tento atribut způsobuje, že ovladač respektuje nastavení klientské lokality při převodu dat, času a měn na znakové řetězce. Převod probíhá z nativních datových typů SQL Server pouze na řetězce znaků.
Hodnota ValuePtr je typu SQLLEN.
| ValuePtr hodnota | Description |
|---|---|
| SQL_RE_OFF | Výchozí. Ovladač nepřevádí data, čas a měnu na znaková řetězce pomocí nastavení klientského prostředí. |
| SQL_RE_ON | Ovladač používá nastavení klientské lokality při převodu dat, času a měn na data řetězců znaků. |
Regionální konverzní nastavení se vztahují na měnové, číselné, datové a časové typy. Nastavení konverze platí pouze pro výstupní konverze, když jsou měny, čísel, data nebo času převedeny na znakové řetězce.
Note
Když je zapnutá možnost příkazu SQL_SOPT_SS_REGIONALIZE, ovladač používá nastavení registru lokality pro aktuálního uživatele. Ovladač nerespektuje aktuální lokalitu vlákna, pokud ji aplikace nastaví například voláním SetThreadLocale.
Změna regionálního chování datového zdroje může způsobit selhání aplikace. Aplikace, která analyzuje řetězce dat a očekává, že řetězce budou vypadat podle definice ODBC, by mohla být změnou této hodnoty negativně ovlivněna.
SQL_SOPT_SS_TEXTPTR_LOGGING
Atribut SQL_SOPT_SS_TEXTPTR_LOGGING přepíná zaznamenávání operací ve sloupcích obsahujícíchtextová nebo obrazová data. Hodnota ValuePtr je typu SQLLEN.
| ValuePtr hodnota | Description |
|---|---|
| SQL_TL_OFF | Vypíná záznamy operací prováděných na textových a obrazových datech. |
| SQL_TL_ON | Výchozí. Umožňuje zaznamenávání operací provedených na textovýcha obrazových datech. |
SQL_SOPT_SS_HIDDEN_COLUMNS
Atribut SQL_SOPT_SS_HIDDEN_COLUMNS vystavuje ve výsledné sadě sloupce skryté v příkazu SELECT FOR BROWSE SQL Server. Ovladač tyto sloupce ve výchozím nastavení nezobrazuje. Hodnota ValuePtr je typu SQLLEN.
| ValuePtr hodnota | Description |
|---|---|
| SQL_HC_OFF | Výchozí. Sloupce PRO BROWSE jsou skryté ve výsledné množině. |
| SQL_HC_ON | Expozice PRO PROHLÍŽENÍ sloupků. |
SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT
Atribut SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT vrací text zprávy pro požadavek na oznámení dotazu.
SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS
Atribut SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS specifikuje možnosti použité pro požadavek na notifikaci dotazu. Tyto jsou specifikovány v řetězci se name=value syntaxí, jak je uvedeno níže. Aplikace je zodpovědná za vytváření služby a čtení notifikací z fronty.
Syntaxe řetězce možností dotazu je:
service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]
Příklady:
service=mySSBService;local database=mydb
SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT
Atribut SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT určuje, kolik sekund má oznámení o dotazu zůstat aktivní. Výchozí hodnota je 432000 sekund (5 dní). Hodnota ValuePtr je typu SQLLEN.
SQL_SOPT_SS_PARAM_FOCUS
Atribut SQL_SOPT_SS_PARAM_FOCUS specifikuje zaměření pro následující volání SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec a SQLSetDescRec.
Typ pro SQL_SOPT_SS_PARAM_FOCUS je SQLULEN.
Výchozí je 0, což znamená, že tato volání adresují parametry, které odpovídají parametrům v SQL příkazu. Při nastavení na číslo parametru parametru s tabulkovou hodnotou tato volání adresují sloupce tohoto parametru s tabulkovou hodnotou. Pokud je tato volání nastavena na hodnotu, která není číslem parametru tabulkově hodnotitého, vracejí chybu IM020: "Zaměření parametru se nevztahuje na parametr s tabulkovou hodnotou".
SQL_SOPT_SS_NAME_SCOPE
Atribut SQL_SOPT_SS_NAME_SCOPE určuje rozsah názvu pro následující volání katalogových funkcí. Výsledná sada vrácená SQLColumns závisí na nastavení SQL_SOPT_SS_NAME_SCOPE.
Typ pro SQL_SOPT_SS_NAME_SCOPE je SQLULEN.
| ValuePtr hodnota | Description |
|---|---|
| SQL_SS_NAME_SCOPE_TABLE | Výchozí. Při použití parametrů s tabulkovými hodnotami označuje, že by měla být vrácena metadata pro skutečné tabulky. Při použití funkce řídkých sloupců SQLColumns vrátí pouze sloupce, které nejsou členy řídké column_set. |
| SQL_SS_NAME_SCOPE_TABLE_TYPE | Označuje, že aplikace vyžaduje metadata pro typ tabulky, nikoli pro skutečnou tabulku (katalogové funkce by měly vracet metadata pro typy tabulek). Aplikace pak předává TYPE_NAME parametru s hodnotou tabulky jako parametr TableName . |
| SQL_SS_NAME_SCOPE_EXTENDED | Při použití funkce řídkých sloupců SQLColumns vrací všechny sloupce bez ohledu na column_set členství. |
| SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET | Při použití funkce řídkých sloupců SQLColumns vrací pouze sloupce, které jsou členy řídké column_set. |
| SQL_SS_NAME_SCOPE_DEFAULT | Rovno SQL_SS_NAME_SCOPE_TABLE. |
SS_TYPE_CATALOG_NAME a SS_TYPE_SCHEMA_NAME se používají s parametry CatalogName a SchemaName , respektive, k identifikaci katalogu a schématu pro parametr s hodnotou tabulky. Když aplikace dokončí získávání metadat pro tabulkové parametry, musí SQL_SOPT_SS_NAME_SCOPE nastavit zpět na výchozí hodnotu SQL_SS_NAME_SCOPE_TABLE.
Když je SQL_SOPT_SS_NAME_SCOPE nastaveno na SQL_SS_NAME_SCOPE_TABLE, dotazy na propojené servery selžou. Volání SQLColumns nebo SQLPrimaryKeys s katalogem obsahujícím serverovou komponentu selžou.
Pokud se pokusíte nastavit SQL_SOPT_SS_NAME_SCOPE na neplatnou hodnotu, SQL_ERROR se vrátí a vygeneruje se diagnostický záznam se SQLSTATE HY024 a zprávou "Invalid attribute value".
Pokud je zavolána katalogová funkce jiná než SQLTables, SQLColumns nebo SQLPrimaryKeys, když SQL_SOPT_SS_NAME_SCOPE má hodnotu jinou než SQL_SS_NAME_SCOPE_TABLE, SQL_ERROR se vrátí. Je vygenerován diagnostický záznam pomocí SQLSTATE HY010 a zpráva "Function sequence error (SQL_SOPT_SS_NAME_SCOPE is not set to SQL_SS_NAME_SCOPE_TABLE)".