我正在开发一个JAVA应用程序,该应用程序评估实例上所有数据库的数据和日志大小,并邮寄每月报告。我目前正在使用SQLServer2014。我正在使用一个SQL查询,该查询通过查询sys.master_files计算所有数据库的大小。
问题是使用JDBC进行查询时,它返回错误:
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost"
我已经尝试连接到特定的数据库,并且工作正常。有什么方法可以使用JDBC直接对sys.master_files进行此查询?还是总有一种更聪明的方法来达到相同的结果?
谢谢
最佳答案
您的“找不到合适的驱动程序”错误仅是由于连接URL格式错误。 jdbc:microsoft:sqlserver
无效。
至于在不指定特定数据库的情况下连接实例,这对我来说效果很好:
// NB: no databaseName specified in the following
String connectionUrl = "jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;integratedSecurity=true";
try (Connection conn = DriverManager.getConnection(connectionUrl)) {
String sql = "SELECT name FROM sys.master_files WHERE type_desc='ROWS' ORDER BY database_id";
try (
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql)) {
while (rs.next()) {
System.out.println(rs.getString(1));
}
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
请注意,
sys.master_files
是在所有数据库中可用的系统视图,因此AFAIK调用当前数据库(目录)的大小并不重要。