41 lines
2.6 KiB
Java
41 lines
2.6 KiB
Java
import java.io.FileInputStream;
|
|
import java.sql.*;
|
|
import java.util.Properties;
|
|
public class Verify {
|
|
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"))) {
|
|
// 1. identity columns
|
|
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(
|
|
"SELECT OBJECT_NAME(ic.object_id) AS tbl, ic.name, ic.is_identity FROM sys.identity_columns ic WHERE ic.name='b_id'")) {
|
|
System.out.println("== identity columns on b_id ==");
|
|
if (!rs.next()) System.out.println(" NONE (all s_* tables b_id no longer identity)");
|
|
else { do { System.out.println(" " + rs.getString("tbl")); } while (rs.next()); }
|
|
}
|
|
// 2. all PKs still exist
|
|
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(
|
|
"SELECT OBJECT_NAME(kc.parent_object_id) AS tbl, kc.name FROM sys.key_constraints kc WHERE kc.type='PK' AND kc.parent_object_id IN (SELECT object_id FROM sys.tables WHERE name LIKE 's' + char(95) + '%') ORDER BY 1")) {
|
|
System.out.println("== PKs ==");
|
|
while (rs.next()) System.out.println(" " + rs.getString("tbl") + " " + rs.getString("name"));
|
|
}
|
|
// 3. table count
|
|
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM sys.tables")) {
|
|
rs.next(); System.out.println("total_tables=" + rs.getInt(1));
|
|
}
|
|
// 4. FK count (should still be 0)
|
|
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));
|
|
}
|
|
// 5. b_user unchanged
|
|
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT is_identity FROM sys.columns WHERE object_id=OBJECT_ID('b_user') AND name='b_id'")) {
|
|
rs.next(); System.out.println("b_user.b_id is_identity=" + rs.getBoolean("is_identity"));
|
|
}
|
|
// 6. select from b_user to confirm it's still readable
|
|
try (Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM b_user")) {
|
|
rs.next(); System.out.println("b_user row_count=" + rs.getInt(1));
|
|
}
|
|
}
|
|
}
|
|
}
|