37 lines
2.1 KiB
Java
37 lines
2.1 KiB
Java
import java.io.FileInputStream;
|
|
import java.sql.*;
|
|
import java.util.Properties;
|
|
|
|
public class DbState {
|
|
public static void main(String[] args) throws Exception {
|
|
Properties props = new Properties();
|
|
try (FileInputStream in = new FileInputStream(args[0])) { props.load(in); }
|
|
try (Connection conn = DriverManager.getConnection(props.getProperty("url"), props.getProperty("username"), props.getProperty("password"))) {
|
|
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM sys.foreign_keys")) {
|
|
rs.next(); System.out.println("physical_fk_count=" + rs.getInt(1));
|
|
}
|
|
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM sys.tables")) {
|
|
rs.next(); System.out.println("table_count=" + rs.getInt(1));
|
|
}
|
|
// 元数据表 b_id 是否仍是 identity
|
|
try (Statement st = conn.createStatement();
|
|
ResultSet rs = st.executeQuery(
|
|
"SELECT OBJECT_NAME(ic.object_id) AS tbl, ic.name AS col, ic.seed_value, ic.increment_value " +
|
|
"FROM sys.identity_columns ic " +
|
|
"WHERE ic.name = 'b_id' ORDER BY tbl")) {
|
|
System.out.println("identity_b_id_columns (sample):");
|
|
int n = 0;
|
|
while (rs.next() && n < 25) { n++; System.out.printf(" %-22s b_id identity(%s,%s)%n", rs.getString("tbl"), rs.getString("seed_value"), rs.getString("increment_value")); }
|
|
System.out.println(" ... total shown=" + n);
|
|
}
|
|
// 最近 30 天内是否新建/修改过表
|
|
try (Statement st = conn.createStatement();
|
|
ResultSet rs = st.executeQuery(
|
|
"SELECT COUNT(*) FROM sys.tables t JOIN sys.objects o ON o.object_id = t.object_id " +
|
|
"WHERE o.modify_date > DATEADD(day, -30, GETUTCDATE())")) {
|
|
rs.next(); System.out.println("tables_modified_last_30d=" + rs.getInt(1));
|
|
}
|
|
}
|
|
}
|
|
}
|