我正在开发一个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调用当前数据库(目录)的大小并不重要。

10-05 23:15
查看更多