我正在开发一个JAVA应用程序,用于评估实例上所有数据库的数据和日志大小,并邮寄月度报告。我目前正在使用SQLServer2014。我正在使用SQL查询,通过查询sys.master_files来计算所有数据库的大小。
问题是当使用JDBC进行查询时,它会返回错误:
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost"
我已尝试连接到特定数据库,并且工作正常。有没有办法使用JDBC直接对sys.master_files进行查询?或者是否有更聪明的方法来完成相同的结果?
由于
答案 0 :(得分:1)
您的“找不到合适的驱动程序”错误仅仅是由于连接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与当前数据库(目录)无关。