2008-12-04 8 views
3

Nous mettons à niveau nos serveurs vers SQL Server 2005 à partir de SQL Server 2000. Nous utilisons actuellement les pilotes jtds. Je veux savoir ce que les gens pensent des différents pilotes jdbc disponibles (en particulier le dernier pilote Microsoft), comment ils fonctionnent avec SQL Server 2005 et d'autres leçons tirées de votre expérience collective.JDBC pilotes java sql server 2005

+0

SQL Server 2008 n'est-il pas disponible maintenant? Eh bien, au moins vous n'utilisez pas MS Access! – fiddlesticks

+0

Certains d'entre nous n'aiment pas faire face à la dernière série de bugs et au manque de fonctionnalités qui viennent avec les nouvelles versions du serveur sql! – Sam

Répondre

2

J'ai utilisé le pilote fourni par MS, le pilote jtds, ainsi que le pilote de jnetdirect.

Malheureusement aucun d'entre eux n'est parfait, et tous ont leurs propres bogues (y compris bien sûr Microsofts propre). Bien entendu, les pilotes fournis par MS ont pris en charge les fonctionnalités les plus récentes avant les autres fournisseurs, mais je dois dire que j'ai rarement vu des différences significatives de performances entre les pilotes. Mon conseil serait de s'assurer que votre application lit le nom du pilote et l'URL de connexion à partir d'un fichier de propriétés quelque part afin que vous puissiez facilement basculer entre les pilotes si vous rencontrez des problèmes avec celui que vous choisissez. Vous serez heureux de l'avoir fait plus tard.

0

Nous avons essayé d'utiliser Microsoft JDBC Driver 2.0 avec SQL Server 2005. Le problème que nous courions en était - lors de l'appel d'une procédure stockée, le pilote générait les instructions SQL suivantes -

declare @P1 int 
set @P1=1 
exec sp_prepexec @P1 output, N'@P0 int', N'EXEC getEmployeeManagers @P0', 50 
select @P1 

procédures stockées Ainsi fonctionnent dans les instructions sp_prepexec. Et plus tard, lorsque vous fermez la déclaration, le sp_unprepare est appelé. Cela semble être le comportement par défaut du pilote MS. Le problème avec ceci est que l'overhead pour générer une instruction préparée et ensuite la fermer a un impact sur les performances. Pourquoi ne pas le conducteur peut faire exactement cela -

exec getEmployeeManagers @P0=50 

Nous utilisons maintenant le pilote jTDS et il semble être d'effectuer une grande.