Database
 sql >> Base de données >  >> RDS >> Database

Une solution de contournement pour :les curseurs ne sont pas pris en charge sur une table qui a un index cluster columnstore

Dans la version 1.7.16, le pilote ODBC Easysoft SQL Server est passé d'un curseur client à un curseur serveur lorsque le comportement d'une application suggérait qu'elle n'avait besoin que d'un sous-ensemble de données dans un résultat de requête. Avec un curseur client, la base de données envoie le jeu de résultats complet dans une seule réponse au pilote lorsqu'il répond à une requête. Le comportement 1.7.16+ imite également le comportement du client SQL natif de Microsoft à cet égard.

Un remplacement de ce comportement a été ajouté dans la version 1.8.10, car si l'application veut réellement l'ensemble de résultats complet, l'utilisation d'un curseur de serveur a des implications sur les performances, car les curseurs de serveur sont plus lents. Une autre conséquence de la modification de la version 1.7.16 est un problème qui nous a été signalé par un client qui utilisait Cognos sur Linux avec SQL Server. Lors d'une tentative d'interrogation d'une table avec des index clustered columnstore, le client a reçu l'erreur :

"Cursors are not supported on a table which has a clustered columnstore index"

car les curseurs de serveur ne sont pas pris en charge lors de l'utilisation de cette fonction. La solution de contournement consistait à revenir au comportement précédent des curseurs en ajoutant cette ligne à la source de données ODBC dans /etc/odbc.ini :

[SQLSERVER_SAMPLE]
.
.
.
OVERRIDE=65536