Problèmes lors de l'acceptation du pilote JTDS sendSsortingngParametersAsUnicode = false?

J'ai utilisé net.sourceforge.jtds.jdbc.Driver comme pilote de MSSQL pour toutes mes applications. J'ai eu des problèmes avec les performances dans une instruction préparée, et j'ai appris que sendSsortingngParametersAsUnicode = false devrait résoudre le problème. Malheureusement, je n'arrive pas à convaincre le conducteur d'accepter la valeur. Je peux get le pilote Microsoft com.microsoft.sqlserver.jdbc.SQLServerDriver pour accepter le paramètre très bien:

jdbc:sqlserver://servername:1433;databaseName=dbname;sendSsortingngParametersAsUnicode=false 

fonctionne dans un persistence.xml, et dans mon ds.xml. Les déclarations préparées vont vite, 100 en 22 secondes.

Cependant, je n'arrive pas à get la même amélioration des performances de JTDS. Il traîne toujours autour de la déclaration préparée, en prenant quelques secondes à chaque itération.

J'ai essayé plusieurs variations sur la string, et vois le même retard dans mes tests (persistence.xml avec Hibernate.connection.url) et Server avec JTA et ds.xml.

 jdbc:jtds:sqlserver://server:1433/dbname;sendSsortingngParametersAsUnicode=false jdbc:jtds:sqlserver://server:1433;sendSsortingngParametersAsUnicode=false;databaseName=dbname jdbc:jtds:sqlserver://server:1433;sendSsortingngParametersAsUnicode=false;selectMethod=cursor;socketKeepAlive=true;databaseName=dbname 

Tout ce que j'ai lu indique que le pilote Microsoft est plus lent, et que ma société avait des problèmes avec le passé. Je voudrais vraiment utiliser JTDS si possible, mais je ne peux pas attendre une déclaration préparée pour 10 secondes!

Quelqu'un avait des idées?

Merci

La documentation pour les états sendSsortingngParametersAsUnicode :

Détermine si les parameters de string sont envoyés à la database SQL Server dans Unicode ou dans le encoding de caractères par défaut de la database. Cela affecte sérieusement les performances de SQL Server 2000 car il ne lance pas automatiquement les types (comme 7.0), ce qui signifie que si une colonne d'index est Unicode et que la string est soumise en utilisant le encoding de caractères par défaut (ou l'inverse) SQLServer scan d'index au lieu d'une search d'index. Pour Sybase, détermine si les strings qui ne peuvent pas être codées dans le jeu de caractères du server sont envoyées en tant que strings Unicode. Il y a un hit de performance pour la logique de encoding, mettez donc cette option sur false si les types de données unitext ou univarchar ne sont pas utilisés ou si charset est utf-8.

Donc, si l'inclure dans votre requête rend votre performance pire , cela suggère que ce n'est pas approprié pour votre requête, et vous voyez exactement les problèmes que la documentation met en garde.

Si vous constatez une augmentation des performances dans le pilote MS, il est possible que sendSsortingngParametersAsUnicode ait une signification subtilement différente sur JTDS que sur le pilote MS.

Quelle est la performance de chaque pilote comme avec et sans l'option? Quelle version de SQL Server utilisez-vous? Que montre votre profileur de requête pour ces requêtes? Quelle est votre requête et quels sont les types de champs impliqués?