我有几台使用Microsoft SQL Server JDBC驱动程序的服务器。这些文件都名为java -cp ./db2jcc.jar com.ibm.db2.jcc.DB2Jcc -version
。我需要知道每个驱动程序包含哪个版本的驱动程序。时间戳和文件大小没有帮助,因为我需要提取驱动程序版本号。我需要能够在命令行上运行它。
我见过DB2,您可以运行此命令并获取版本:
code={code}&protocol=https://&store={store}×tamp={timestamp}
Microsoft SQL Server的等价物(如果有)是什么?
答案 0 :(得分:3)
似乎没有专用的CLI来打印驱动程序版本,但您可以向MS 4.x驱动程序询问其版本:
import java.sql.Driver;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
...
Driver driver = new SQLServerDriver();
driver.getMajorVersion(); // -> 4
driver.getMinorVersion(); // -> 0, 1, 2, ...
您可以构建一个简单的命令行包装器来打印出这些信息。
答案 1 :(得分:1)
IBM在其JAR中提供特定工具以提供您描述的行为。它不是JDBC驱动程序或JAR文件的一般功能。
Microsoft记录了确定驱动程序版本on MSDN的可用机制。他们提供两种选择:
SQLServer
] DatabaseMetaData
对象中提取信息(即通过Java程序);最适合您使用的方法似乎是getDriverVersion()
。或readme.txt
文件中提取信息。除非在JAR中打包readme.txt
(可能但不太可能),否则前一种方法是唯一可以单独使用JAR文件的方法。编写一个Java程序并不是很难编写一个包装脚本来将这种方法应用于任务,但它看起来并不像DB2驱动程序那样简单。
答案 2 :(得分:0)
我建议使用这一衬板来获取内部MSSQL驱动程序版本:
$ echo "System.out.println(new com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData(null).getDriverVersion())" | /usr/java/jdk-11.0.2/bin/jshell -q --class-path mssql-jdbc-7.0.0.jre10.jar
jshell> System.out.println(new com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData(null).getDriverVersion())
7.0.0.0
从JDK9开始,可以使用jshell 命令。或者,您也可以在JDK8上使用 jrunscript
$ jrunscript -cp mssql-jdbc-7.0.0.jre10.jar -e "java.lang.System.out.println(new com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData(null).getDriverVersion())"
Warning: Nashorn engine is planned to be removed from a future JDK release
7.0.0.0
答案 3 :(得分:0)
如果您有权访问Java反编译器,则可以使用反编译器打开SQLJDBC JAR并检查此反编译的类:com \ microsoft \ sqlserver \ jdbc \ SQLJdbcVersion.class 它显示如下版本信息:
final class SQLJdbcVersion
{
static final int major = 4;
static final int minor = 0;
static final int MMDD = 2206;
static final int revision = 100;
}
我不知道该类在SQLJDBC JAR的所有版本中是否可用,但是我已经在3.0、4.0和4.2 JAR中找到它。 GitHub(下面的链接)还显示了它在版本6到版本8中的存在。所有版本似乎都包含“主要”和“次要”变量。其他包含的变量根据版本而有所不同。
要从命令行获取该数据,也许您可以创建一个脚本来调用反编译器,然后从反编译文件中提取主要和次要值,然后删除反编译的文件。
根据此页面,SQL Server JDBC驱动程序是开源的: https://docs.microsoft.com/en-us/sql/connect/jdbc/frequently-asked-questions-faq-for-jdbc-driver?view=sql-server-ver15
JDBC驱动程序是开源的,可以在GitHub上找到源代码。
因此,反编译JAR时不应存在合法性问题。
该代码的当前GitHub“ dev”分支版本显示以下值:
final class SQLJdbcVersion {
static final int major = 8;
static final int minor = 4;
static final int patch = 0;
static final int build = 0;
/*
* Used to load mssql-jdbc_auth DLL.
* 1. Set to "-preview" for preview release.
* 2. Set to "" (empty String) for official release.
*/
static final String releaseExt = "";
}