我正在开发一个 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
是一个在所有数据库中都可用的系统 View ,因此据我所知,当您调用它时,当前数据库(目录)是什么并不重要。
关于java - 您可以使用 JDBC 仅连接到实例而不指定数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151423/