Déterminer la version SQL Server JDBC sur la command line

J'ai plusieurs servers qui utilisent le pilote JDBC de Microsoft SQL Server. Les files sont tous nommés sqljdbc4.jar . J'ai besoin de savoir quelle version du pilote chacun contient. Les horodatages et les tailles de files ne sont pas utiles, car j'ai besoin d'extraire le numéro de version du pilote. Je dois pouvoir exécuter ceci sur la command line.

J'ai vu pour DB2 vous pouvez exécuter cette command et get la version:

 java -cp ./db2jcc.jar com.ibm.db2.jcc.DB2Jcc -version 

Quel est l'équivalent, le cas échéant, de Microsoft SQL Server?

Il semble qu'il n'y ait pas d'interface CLI dédiée pour imprimer la version du pilote mais vous pouvez requestr au pilote MS 4.x sa version:

 import java.sql.Driver; import com.microsoft.sqlserver.jdbc.SQLServerDriver; ... Driver driver = new SQLServerDriver(); driver.getMajorVersion(); // -> 4 driver.getMinorVersion(); // -> 0, 1, 2, ... 

Vous pouvez créer un wrapper de command line simple pour imprimer cette information.

IBM fournit des outils spécifiques dans son JAR pour fournir le comportement que vous décrivez. Ce n'est pas une caractéristique générale des pilotes JDBC ou des files JAR.

Microsoft documente les mécanismes disponibles pour déterminer la version du pilote sur MSDN . Ils offrent deux alternatives:

  • extraire les informations d'un object [ SQLServer ] DatabaseMetaData obtenu via le driver (ie par un programme Java); la méthode la plus appropriée pour votre utilisation semble être getDriverVersion() . Ou
  • extrait les informations du file readme.txt fourni dans la dissortingbution.

À less que readme.txt soit empackageé dans le JAR (possible, mais peu probable), l'ancienne approche est la seule qui fonctionnera avec le file JAR seul. Il ne devrait pas être trop difficile d'écrire un programme Java et peut-être un script wrapper pour appliquer cette approche à la tâche, mais cela ne semble pas aussi simple que pour le pilote DB2.