2017-02-10 70 views
1

我正在開發一個JAVA應用程序,用於評估實例上所有數據庫的數據和日誌大小,併發送每月報告。我目前正在使用SQLServer2014。我正在使用查詢sys.master_files來計算所有數據庫大小的SQL查詢。您可以使用JDBC連接到一個實例而不指定數據庫嗎?

的問題是,使用JDBC進行查詢時,它會返回錯誤:

java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost" 

我試圖連接到特定的數據庫和工作正常。有沒有辦法使用JDBC直接對sys.master_files執行此查詢?還是有一個更聰明的方法來完成相同的結果?

感謝

+1

通常,在部署時已知與您的應用程序一起運行的RDBMS。你能詳細說明爲什麼你認爲你需要這個嗎? –

+1

您的網址錯誤,SQL Server的正確URL以'jdbc:sqlserver:'開頭,而不是'jdbc:microsoft:sqlserver:';查看https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url以獲取正確的URL;並根據該文檔,數據庫名稱是可選的(它將連接到默認數據庫)。 –

回答

1

你的錯誤僅僅是由於格式不正確的連接網址「沒有找到合適的驅動程序」。 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沒關係當你調用它時,當前的數據庫(目錄)是什麼。

相關問題