Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le pilote ODBC SQL Server Native Client ne prend pas en charge le modèle de curseur mixte (jeu de clés/dynamique). Les tentatives de définition de la taille du jeu de clés à l’aide de SQL_ATTR_KEYSET_SIZE échouent si le jeu de valeurs n’est pas égal à 0.
L’application définit SQL_ATTR_ROW_ARRAY_SIZE sur toutes les instructions pour déclarer le nombre de lignes retournées sur un appel de fonction SQLFetch ou SQLFetchScroll. Sur les instructions indiquant un curseur de serveur, le pilote utilise SQL_ATTR_ROW_ARRAY_SIZE pour déterminer la taille du bloc de lignes généré par le serveur pour satisfaire une demande d’extraction à partir du curseur. Dans la taille de bloc d’un curseur dynamique, l’appartenance aux lignes et l’ordre sont fixes si le niveau d’isolation des transactions est suffisant pour garantir des lectures reproductibles des transactions validées. Le curseur est complètement dynamique en dehors du bloc indiqué par cette valeur. La taille du bloc de curseur du serveur est complètement dynamique et peut être modifiée à tout moment dans le traitement d’extraction.
Paramètres SQLSetStmtAttr et Table-Valued
SQLSetStmtAttr peut être utilisé pour définir SQL_SOPT_SS_PARAM_FOCUS dans le descripteur de paramètre d’application (APD) avant d’accéder aux champs de descripteur pour les colonnes de paramètres table.
Si une tentative est effectuée pour définir SQL_SOPT_SS_PARAM_FOCUS sur l’ordinal d’un paramètre qui n’est pas un paramètre table, SQLSetStmtAttr retourne SQL_ERROR et un enregistrement de diagnostic est créé avec SQLSTATE = HY024 et le message « Valeur d’attribut non valide ». SQL_SOPT_SS_PARAM_FOCUS n’est pas modifié lorsque SQL_ERROR est retourné.
Définir SQL_SOPT_SS_PARAM_FOCUS sur 0 restaure l’accès aux enregistrements de descripteur pour les paramètres.
SQLSetStmtAttr peut également être utilisé pour définir SQL_SOPT_SS_NAME_SCOPE. Pour plus d’informations, consultez la section SQL_SOPT_SS_NAME_SCOPE, plus loin dans cette rubrique.
Pour plus d’informations, consultez Table-Valued métadonnées de paramètre pour les instructions préparées.
Pour plus d’informations sur les paramètres table, consultez Paramètres table (ODBC) .
Prise en charge de SQLSetStmtAttr pour les colonnes éparses
SQLSetStmtAttr peut être utilisé pour définir SQL_SOPT_SS_NAME_SCOPE. Pour plus d’informations, consultez la section SQL_SOPT_SS_NAME_SCOPE, plus loin dans cette rubrique. Pour plus d’informations sur les colonnes éparses, consultez La prise en charge des colonnes éparses (ODBC).
Attributs d’instruction
Le pilote ODBC SQL Server Native Client prend également en charge les attributs d’instruction spécifiques au pilote suivants.
SQL_SOPT_SS_CURSOR_OPTIONS
L’attribut SQL_SOPT_SS_CURSOR spécifie si le pilote utilisera des options de performances spécifiques au pilote sur les curseurs. SQLGetData n’est pas autorisé lorsque ces options sont définies. Le paramètre par défaut est SQL_CO_OFF. La valeur ValuePtr est de type SQLLEN.
| Valeur ValuePtr | Descriptif |
|---|---|
| SQL_CO_OFF | Par défaut. Désactive les curseurs rapides en avant uniquement, en lecture seule et autorécupération, active SQLGetData sur les curseurs en lecture seule et en lecture seule. Lorsque SQL_SOPT_SS_CURSOR_OPTIONS est défini sur SQL_CO_OFF, le type de curseur ne change pas. Autrement dit, le curseur avant uniquement rapide reste un curseur avant uniquement rapide. Pour modifier le type de curseur, l’application doit maintenant définir un type de curseur différent à l’aide SQLSetStmtAttrde /SQL_ATTR_CURSOR_TYPE. |
| SQL_CO_FFO | Active les curseurs rapides en avant uniquement, en lecture seule, désactive SQLGetData sur les curseurs en lecture seule et en lecture seule. |
| SQL_CO_AF | Active l’option de saisie automatique sur n’importe quel type de curseur. Lorsque cette option est définie pour un handle d’instruction, SQLExecute ou SQLExecDirect génère un SQLFetchScroll implicite (SQL_FIRST). Le curseur est ouvert et le premier lot de lignes est retourné dans un seul aller-retour au serveur. |
| SQL_CO_FFO_AF | Active les curseurs rapides vers l’avant uniquement avec l’option de saisie automatique. Il est le même que si les SQL_CO_AF et les SQL_CO_FFO sont spécifiés. |
Lorsque ces options sont définies, le serveur ferme automatiquement le curseur lorsqu’il détecte que la dernière ligne a été récupérée. L’application doit toujours appeler SQLFreeStmt (SQL_CLOSE) ou SQLCloseCursor, mais le pilote n’a pas besoin d’envoyer la notification proche au serveur.
Si la liste de sélection contient un texte, ntext ou une colonne d’image , le curseur avant uniquement rapide est converti en curseur dynamique et SQLGetData est autorisé.
SQL_SOPT_SS_DEFER_PREPARE
L’attribut SQL_SOPT_SS_DEFER_PREPARE détermine si l’instruction est préparée immédiatement ou différée jusqu’à SQLExecute, SQLDescribeCol ou SQLDescribeParam est exécutée. Dans SQL Server 7.0 et versions antérieures, cette propriété est ignorée (aucune préparation différée). La valeur ValuePtr est de type SQLLEN.
| Valeur ValuePtr | Descriptif |
|---|---|
| SQL_DP_ON | Par défaut. Après avoir appelé SQLPrepare Function, la préparation de l’instruction est différée jusqu’à ce que SQLExecute soit appelée ou l’opération de métapropriété (SQLDescribeCol ou SQLDescribeParam) soit exécutée. |
| SQL_DP_OFF | L’instruction est préparée dès que SQLPrepare est exécuté. |
SQL_SOPT_SS_REGIONALIZE
L’attribut SQL_SOPT_SS_REGIONALIZE est utilisé pour déterminer la conversion de données au niveau de l’instruction. L’attribut provoque le respect du paramètre des paramètres régionaux du client lors de la conversion des valeurs de date, d’heure et de devise en chaînes de caractères. La conversion est de types de données natifs SQL Server en chaînes de caractères uniquement.
La valeur ValuePtr est de type SQLLEN.
| Valeur ValuePtr | Descriptif |
|---|---|
| SQL_RE_OFF | Par défaut. Le pilote ne convertit pas les données de date, d’heure et de devise en données de chaîne de caractères à l’aide du paramètre de paramètres régionaux du client. |
| SQL_RE_ON | Le pilote utilise le paramètre de paramètres régionaux du client lors de la conversion des données de date, d’heure et de devise en données de chaîne de caractères. |
Les paramètres de conversion régionaux s’appliquent aux types de données monétaire, numérique, date et heure. Le paramètre de conversion s’applique uniquement aux conversions de sortie lorsque les valeurs monétaire, numérique, date ou heure sont converties en chaînes de caractères.
Remarque
Lorsque l’option d’instruction SQL_SOPT_SS_REGIONALIZE est activée, le pilote utilise les paramètres de Registre des paramètres régionaux pour l’utilisateur actuel. Le pilote ne respecte pas les paramètres régionaux du thread actuel si l’application la définit par exemple en appelant SetThreadLocale.
La modification du comportement régional d’une source de données peut entraîner une défaillance de l’application. Une application qui analyse les chaînes de date et s’attend à ce que les chaînes de date apparaissent comme définies par ODBC, peut être affectée par la modification de cette valeur.
SQL_SOPT_SS_TEXTPTR_LOGGING
L’attribut SQL_SOPT_SS_TEXTPTR_LOGGING bascule la journalisation des opérations sur les colonnes contenant du texte ou des données d’image . La valeur ValuePtr est de type SQLLEN.
| Valeur ValuePtr | Descriptif |
|---|---|
| SQL_TL_OFF | Désactive la journalisation des opérations effectuées sur le texte et les données d’image . |
| SQL_TL_ON | Par défaut. Active la journalisation des opérations effectuées sur le texte et les données d’image . |
SQL_SOPT_SS_HIDDEN_COLUMNS
L’attribut SQL_SOPT_SS_HIDDEN_COLUMNS expose, dans le jeu de résultats, les colonnes masquées dans une instruction SQL Server SELECT FOR BROWSE. Le pilote n’expose pas ces colonnes par défaut. La valeur ValuePtr est de type SQLLEN.
| Valeur ValuePtr | Descriptif |
|---|---|
| SQL_HC_OFF | Par défaut. Les colonnes FOR BROWSE sont masquées dans le jeu de résultats. |
| SQL_HC_ON | Expose les colonnes FOR BROWSE. |
SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT
L’attribut SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT retourne le texte du message de la demande de notification de requête.
SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS
L’attribut SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS spécifie les options utilisées pour la demande de notification de requête. Celles-ci sont spécifiées dans une chaîne avec name=value la syntaxe spécifiée ci-dessous. L’application est chargée de créer le service et de lire les notifications hors de la file d’attente.
La syntaxe de la chaîne des options de notifications de requêtes est :
service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]
Par exemple:
service=mySSBService;local database=mydb
SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT
L’attribut SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT spécifie le nombre de secondes pendant lesquelles la notification de requête doit rester active. La valeur par défaut est 432000 secondes (5 jours). La valeur ValuePtr est de type SQLLEN.
SQL_SOPT_SS_PARAM_FOCUS
L’attribut SQL_SOPT_SS_PARAM_FOCUS spécifie le focus pour les appels SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec et SQLSetDescRec.
Le type de SQL_SOPT_SS_PARAM_FOCUS est SQLULEN.
La valeur par défaut est 0, ce qui signifie que ces appels adressent des paramètres qui correspondent aux marqueurs de paramètres dans l’instruction SQL. Lorsque la valeur est définie sur le numéro de paramètre d’un paramètre table, ces appels appellent les colonnes d’adresse de ce paramètre table. Lorsqu’elle est définie sur une valeur qui n’est pas le numéro de paramètre d’un paramètre table, ces appels retournent l’erreur IM020 : « Le focus du paramètre ne fait pas référence à un paramètre table ».
SQL_SOPT_SS_NAME_SCOPE
L’attribut SQL_SOPT_SS_NAME_SCOPE spécifie l’étendue du nom pour les appels de fonction catalogue suivants. Le jeu de résultats retourné par SQLColumns dépend du paramètre de SQL_SOPT_SS_NAME_SCOPE.
Le type de SQL_SOPT_SS_NAME_SCOPE est SQLULEN.
| Valeur ValuePtr | Descriptif |
|---|---|
| SQL_SS_NAME_SCOPE_TABLE | Par défaut. Lorsque vous utilisez des paramètres table, indique que les métadonnées des tables réelles doivent être retournées. Lorsque vous utilisez la fonctionnalité colonnes éparses, SQLColumns retourne uniquement les colonnes qui ne sont pas membres de l’éparse column_set. |
| SQL_SS_NAME_SCOPE_TABLE_TYPE | Indique que l’application requiert des métadonnées pour un type de table plutôt qu’une table réelle (les fonctions de catalogue doivent retourner les métadonnées pour les types de tables). L’application transmet ensuite la TYPE_NAME du paramètre table comme paramètre TableName . |
| SQL_SS_NAME_SCOPE_EXTENDED | Lorsque vous utilisez la fonctionnalité colonnes éparses, SQLColumns retourne toutes les colonnes, quelle que soit l’appartenance column_set . |
| SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET | Lorsque vous utilisez la fonctionnalité colonnes éparses, SQLColumns retourne uniquement les colonnes membres de l’éparse column_set. |
| SQL_SS_NAME_SCOPE_DEFAULT | Égal à SQL_SS_NAME_SCOPE_TABLE. |
SS_TYPE_CATALOG_NAME et SS_TYPE_SCHEMA_NAME sont utilisés avec les paramètres CatalogName et SchemaName, respectivement, pour identifier le catalogue et le schéma du paramètre table. Quand une application a fini d'extraire les métadonnées des paramètres table, elle doit redéfinir SQL_SOPT_SS_NAME_SCOPE avec sa valeur par défaut SQL_SS_NAME_SCOPE_TABLE.
Lorsque SQL_SOPT_SS_NAME_SCOPE est défini avec la valeur SQL_SS_NAME_SCOPE_TABLE, les requêtes adressées aux serveurs liés échouent. Les appels à SQLColumns ou SQLPrimaryKeys avec un catalogue contenant un composant serveur échouent.
Si vous tentez de définir SQL_SOPT_SS_NAME_SCOPE sur une valeur non valide, SQL_ERROR est retourné et un enregistrement de diagnostic est généré avec SQLSTATE HY024 et le message « Valeur d’attribut non valide ».
Si une fonction catalogue autre que SQLTables, SQLColumns ou SQLPrimaryKeys est appelée lorsque SQL_SOPT_SS_NAME_SCOPE a une valeur autre que SQL_SS_NAME_SCOPE_TABLE, SQL_ERROR est retournée. Un enregistrement de diagnostic est généré avec SQLSTATE HY010 et le message « Erreur de séquence de fonction (SQL_SOPT_SS_NAME_SCOPE n’est pas définie sur SQL_SS_NAME_SCOPE_TABLE) ».
Voir aussi
SQLGetStmtAttr, fonction
Détails de l’implémentation d’API ODBC